在C中用文件写多行

时间:2014-06-12 05:21:22

标签: c visual-studio-2008 command-prompt

#include <stdio.h>
int main ()
{
  FILE * fp;
  int i,n;
  char str[20];
  printf("Enter the number of lines to be written: ");
  scanf("%d", &n);
  fp = fopen ("abc.txt","w"); 
  for(i = 0; i < n+1;i++)
  {
    gets(str);
    fputs(str, fp);
  }

  fclose (fp);
  return 0;
}

在这段代码中,我可以写多行但是当我在记事本中检查结果时,这些多行显示在一行中。如何在命令提示符下输入它们时显示它们(这里我使用的是Visual Studio 2008命令提示符)。

5 个答案:

答案 0 :(得分:2)

您替换现有的添加

    #include <stdio.h>
    int main ()
    {
      FILE * fp;
      int i,n;
      char str[20];
      printf("Enter the number of lines to be written: ");
      scanf("%d", &n);
      fp = fopen ("abc.txt","w"); 
      for(i = 0; i < n+1;i++)
      {
        gets(str);
        fputs(str, fp);
        fputs("\n", fp);
      }

      fclose (fp);
      return 0;
    }

添加输入后。

    fputs("\n", fp);
在添加文本后,

在文件abc.txt中添加新行。

答案 1 :(得分:1)

添加类似的内容,

fputs(str, fp);
fputs("\r\n", fp); /* add a Windows new line */

答案 2 :(得分:1)

您可以尝试这样:

fputs("\n", fp); 

即,将\n移至下一行。 \n用作C

中的换行符

答案 3 :(得分:0)

您需要将\ r \ n附加到每一行。 (回车加行换行。)

UNIX只需要\ n,但是有些Windows工具不能很好地解决这个问题。

答案 4 :(得分:0)

正如WhozCraig指出的,获取是邪恶的,类似于要求缓冲区溢出
但要回答你的问题,请添加一个CRLF(回车+换行),如下所示:

#include <stdio.h>

int main(void){ 
    FILE* fp;
    int n;
    char str[20];
    printf("Enter the number of lines to be written: ");
    scanf("%d", &n);
    fp = fopen ("abc.txt","w"); 
    for(int i = 0; i < n+1;i++){
        gets(str);
        fputs(str, fp);
        fputs("\r\n", fp);
    }
    fclose (fp);
    return 0;
}