Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C按Enter键从标准输入中读取结束的行_C - Fatal编程技术网

C按Enter键从标准输入中读取结束的行

C按Enter键从标准输入中读取结束的行,c,C,我正在为C语言的项目编写一个程序,我有这样的输入: ............xcx............ .........qeztodlea......... .......ecnedivorpuzy....... .....bqfjwxqindnrsatrs..... ....ucaamadisonoctoieax.... ...ozkttqdxwltstaivcilex... ...ujknnakigzfasxninltxc... ..rabxaa...k

我正在为C语言的项目编写一个程序,我有这样的输入:

  ............xcx............
  .........qeztodlea.........
  .......ecnedivorpuzy.......
  .....bqfjwxqindnrsatrs.....
  ....ucaamadisonoctoieax....
  ...ozkttqdxwltstaivcilex...
  ...ujknnakigzfasxninltxc...
  ..rabxaa...kohce...oelnyd..
  ..rithls...momrl...spayvh..

      honolulu
  oklahomacity
  charleston
  madison
  montgomery
  saltlakecity
  springfield
第一组数据和第二组数据用空行隔开,我需要在一个
上输入
按处理它

如果我在终端窗口中复制此数据,然后按
Enter
,然后按Ctr+D(表示输入结束),它工作正常,但如果只按
Enter
,我仍然需要输入数据。我不明白要更改什么,所以只有在第一次输入时,我才能完成输入并继续我的程序?我知道这个问题听起来很愚蠢,但在我的函数读取行中,我使用了
fgetc
,因为我需要检查一些字母,如果要使用例如
fgets
,那么它将首先停止
nl
,使用哪个函数?也许我没有得到什么,一般来说可能吗

我已经有了读行的rLine函数(使用fgetc):

,其中
ha
某种错误消息处理程序。Tnx


注意:好的,我发现输入的结尾驱动方式与
CTRL+D
组合驱动方式相同。因此,实际上检查
if(c==EOF)
(或
c=='\0'
)对我来说很好。因此,实际上这个问题现在可以结束了。

您是否熟悉新行的
'\n'
和回车的
'\r\n'

添加此行并处理新行案例:

  if ( c == '\n' ) { // that is a new line }
你看过这个帖子吗:


您是否熟悉新行的
'\n'
和回车的
'\r\n'

添加此行并处理新行案例:

  if ( c == '\n' ) { // that is a new line }
你看过这个帖子吗:


为什么不直接使用
fgets
,然后稍后检查您阅读的行是否包含要专门处理的字符
strchr
似乎是解决这个问题的合适工具。但是
fgets
会在第一行新代码上停止吗?如何验证是否按下enter键且输入结束?检查
fgets
是否读取了空行
fgets(ln,size,file)
然后检查
ln[0]='\n'
。为什么不直接使用
fgets
,然后检查您读取的行是否包含要专门处理的字符
strchr
似乎是解决这个问题的合适工具。但是
fgets
会在第一行新代码上停止吗?如何验证是否按下enter键且输入结束?检查
fgets
是否读取了空行
fgets(ln,size,file)
然后检查
ln[0]='\n'
是否正确。这不是完全正确的-@AshRj,无论该行将以什么方式断开\n。如果你认为我的回答不清楚,请告诉我。谢谢“您熟悉换行的“\n”和换行的“\r\n”吗?我指的是这个。Linux使用/n作为回车符。我是在Linux机器上输入的。回车是ascii 10->newline。@squiguy:我不想在这里直截了当,我知道在撰写本文时您的评论已经有4年了,但是
'\n'
不应该用双引号引用!在
C
中,'\n'
“\n”
是两个不同的东西
'\n'
字符
“\n”
字符*
字符数组
,等等。此外,单独的类型不能与
=
进行比较=。这不是完全正确的-@AshRj,无论该行将以何种方式中断\n。如果你认为我的回答不清楚,请告诉我。谢谢“您熟悉换行的“\n”和换行的“\r\n”吗?我指的是这个。Linux使用/n作为回车符。我是在Linux机器上输入的。回车是ascii 10->newline。@squiguy:我不想在这里直截了当,我知道在撰写本文时您的评论已经有4年了,但是
'\n'
不应该用双引号引用!在
C
中,'\n'
“\n”
是两个不同的东西
'\n'
字符
“\n”
字符*
字符数组
,等等。此外,单独的类型不能与
=
进行比较=