C按Enter键从标准输入中读取结束的行
我正在为C语言的项目编写一个程序,我有这样的输入:C按Enter键从标准输入中读取结束的行,c,C,我正在为C语言的项目编写一个程序,我有这样的输入: ............xcx............ .........qeztodlea......... .......ecnedivorpuzy....... .....bqfjwxqindnrsatrs..... ....ucaamadisonoctoieax.... ...ozkttqdxwltstaivcilex... ...ujknnakigzfasxninltxc... ..rabxaa...k
............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”
是字符*
,字符数组
,等等。此外,单独的类型不能与=
或进行比较=代码>。