写入文件时,fputs()不会更改行

时间:2015-10-14 09:27:04

标签: c file printing fputs

我目前正在尝试使用.txt文档作为存储所有数据的位置在C中创建数据库。但我不能让fputs()换行,所以我的程序在这个.txt文档中写的所有内容都只在一行上。

    int main(void){

   char c[1000];
   FILE *fptr;
   if ((fptr=fopen("data.txt","r"))==NULL){
       printf("Did not find file, creating new\n");
       fptr = fopen("data.txt", "wb"); 
       fputs("//This text file contain information regarding the program 'monies.c'.\n",fptr);
       fputs("//This text file contain information regarding the program 'monies.c'.\n",fptr);
       fputs("//Feel free to edit the file as you please.",fptr);
       fputs("'\n'",fptr);
       fputs("(Y) // Y/N - Yes or No, if you want to use this as a database",fptr);
       fputs("sum = 2000 //how much money there is, feel free to edit this number as you please.",fptr);
       fclose(fptr);


   }
   fscanf(fptr,"%[^\n]",c);
   printf("Data from file:\n%s",c);

   fclose(fptr);
   return 0;
}

这是我的测试文件。 我觉得我已经尝试了一切,然后是一些,但是不能让它改变线条,非常感谢帮助。 顺便说一句。输出如下所示: Output from the program.

1 个答案:

答案 0 :(得分:4)

您的计划中有两个问题:

  • 你应该指定" w"而不是" wb"这样文件就可以作为文本而不是二进制文件进行读写。虽然在某些系统中这没有区别,但是b被忽略了。
  • 文件读取的部分应该在else中,否则在创建文件后执行,fptr不包含有效值。

这是带有这些更正的代码。我用它获得了多行数据.txt。

int main(void){

  char c[1000];
  FILE *fptr;
  if ((fptr=fopen("data.txt","r"))==NULL){
     printf("Did not find file, creating new\n");
     fptr = fopen("data.txt", "w");
     fputs("//This text file contain information regarding the program 'mon
     fputs("//This text file contain information regarding the program 'mon
     fputs("//Feel free to edit the file as you please.",fptr);
     fputs("'\n'",fptr);
     fputs("(Y) // Y/N - Yes or No, if you want to use this as a database",
     fputs("sum = 2000 //how much money there is, feel free to edit this nu
     fclose(fptr);
  }
  else
  {
    fscanf(fptr,"%[^\n]",c);
    printf("Data from file:\n%s",c);
    fclose(fptr);
  }
  return 0;
}