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

When writing to a file, fputs() does not change line

我目前正在尝试用 C 语言创建一个数据库,使用 .txt 文档作为存储所有数据的地方。但是我无法让 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;
}

这是我的测试文档。 我觉得我已经尝试了一切,然后尝试了一些,但无法让它改变线路,非常感谢帮助。 顺便提一句。输出如下所示:

你的程序有两个问题:

  • 您应该指定 "w" 而不是 "wb" 以便以文本而非二进制形式读取和写入文件。尽管在某些系统中这没有区别并且 b 被忽略。
  • 读取文件的部分应该在else中,否则它会在创建文件后执行,fptr不包含有效值。

这是经过更正的代码。我确实得到了一个多行data.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;
}