如何在C中使用空格和多行来写?

如何在C中使用空格和多行来写?,c,C,我想编写一个文本,并使用和将其保存在.txt中。但用这种方法,我只能省下一行,再也省不下了 int main() { file*pf; char kar; if ((pf = fopen("try.txt","w")) == NULL) { printf("File couldn't created!\r\n"); exit(1); } while((kar=getchar()) != '\n') fputc(kar,

我想编写一个文本,并使用
将其保存在.txt中。但用这种方法,我只能省下一行,再也省不下了

int main()
{
   file*pf;
   char kar;

   if ((pf = fopen("try.txt","w")) == NULL)
   {
      printf("File couldn't created!\r\n");
      exit(1);
   }

   while((kar=getchar()) != '\n')
      fputc(kar, pf);

   fclose(pf);
}
而不是

char kar;

...

while((kar=getchar()) != '\n')
   fputc(kar, pf);
使用

而不是

char kar;

...

while((kar=getchar()) != '\n')
   fputc(kar, pf);
使用


“\n”
表示行尾。在这里,您正在查找文件的结尾。因此,在代码中使用宏
EOF
而不是
'\n'

'\n'
表示行尾。在这里,您正在查找文件的结尾。因此,在代码中使用宏
EOF
而不是
'\n'

将多行代码放入文本文件的完整工作代码。要结束终端的输入,只需按Ctrl+Z键

#include <stdio.h>
#include <stdlib.h>

int main()
{
   FILE *pf;
   char kar;

   if ((pf = fopen("try.txt","w")) == NULL)
   {
      printf("File couldn't created!\r\n");
      exit(1);
   }

   while((kar=getchar()) != EOF)
      fputc(kar, pf);

   fclose(pf);

   return 0;
}
#包括
#包括
int main()
{
文件*pf;
查尔卡;
if((pf=fopen(“try.txt”,“w”))==NULL)
{
printf(“无法创建文件!\r\n”);
出口(1);
}
而((kar=getchar())!=EOF)
fputc(kar,pf);
fclose(pf);
返回0;
}

将多行代码放入文本文件的完整工作代码。要结束终端的输入,只需按Ctrl+Z键

#include <stdio.h>
#include <stdlib.h>

int main()
{
   FILE *pf;
   char kar;

   if ((pf = fopen("try.txt","w")) == NULL)
   {
      printf("File couldn't created!\r\n");
      exit(1);
   }

   while((kar=getchar()) != EOF)
      fputc(kar, pf);

   fclose(pf);

   return 0;
}
#包括
#包括
int main()
{
文件*pf;
查尔卡;
if((pf=fopen(“try.txt”,“w”))==NULL)
{
printf(“无法创建文件!\r\n”);
出口(1);
}
而((kar=getchar())!=EOF)
fputc(kar,pf);
fclose(pf);
返回0;
}

主要问题是无法输入换行符。检查[this][1][1]:这是一个很好的建议,但是将
int
转换为
char
会将
EOF
转换为字符值。。。即使
EOF
不是字符值。请注意,
getchar()
的返回值是
int
,而不是
char
,因此将其存储在
char
中会以某种方式引起混淆。主要问题是无法输入换行符。检查[this][1][1]:这是一个很好的建议,但是将
int
转换为
char
会将
EOF
转换为字符值。。。即使
EOF
不是字符值。请注意,
getchar()
的返回值是
int
,而不是
char
,因此将其存储在
char
中会以某种方式引起混淆。假设我要输入3行,那么如何使其停在第3行@索拉布-agarwal@Embek:使用先前的解决方案,计算行数,并调整while循环以在处中断!=\n&&numberOfLines@Embek,或者输入CTRL+D(如果您使用的是linux/unix/osx),或者按CTRL+Z(windows/DOS)@ckruczek,以及如何使用它?我真的不明白。嗯@Embek,只需在程序中添加一个计数器,并在每次识别“\n”时递增它。不太难管理我猜假设我想输入3行,那么我如何让它停在第3行@索拉布-agarwal@Embek:使用先前的解决方案,计算行数,并调整while循环以在处中断!=\n&&numberOfLines@Embek,或者输入CTRL+D(如果您使用的是linux/unix/osx),或者按CTRL+Z(windows/DOS)@ckruczek,以及如何使用它?我真的不明白。嗯@Embek,只需在程序中添加一个计数器,并在每次识别“\n”时递增它。不太难管理,我想C是一种区分大小写的语言<代码>文件*pf不正确,并且
文件*pf
正确。另外,正如我在对其中一个答案的评论中指出的,
getchar()
的返回类型是
int
,而不是
char
。它必须能够编码任何有效的字符和EOF,这是不同的。在
char
中不能这样做,因此它返回
int
。如果您的普通
char
是有符号类型,则键入字符代码0xFF(通常为ÿ、U+00FF、带分音符的拉丁文小写字母Y)的人将被视为键入EOF;如果plain
char
是无符号的,则没有与EOF匹配的值。请注意,C是区分大小写的语言<代码>文件*pf不正确,并且
文件*pf
正确。另外,正如我在对其中一个答案的评论中指出的,
getchar()
的返回类型是
int
,而不是
char
。它必须能够编码任何有效的字符和EOF,这是不同的。在
char
中不能这样做,因此它返回
int
。如果您的普通
char
是有符号类型,则键入字符代码0xFF(通常为ÿ、U+00FF、带分音符的拉丁文小写字母Y)的人将被视为键入EOF;如果plain
char
无符号,则没有与EOF匹配的值。