我想在while循环中读取字符串,直到输入结束,但是我不知道如何。例如,输入为:
Car
Black car
White car
[首先,我想扫描'car'并将其保存在数组中。然后,我要扫描“黑色汽车”并将其放进去,依此类推。
while (scanf("%[^\n]", s)>0)
这仅读取一行,但是当我使用此代码时:
while(scanf("%s", s) > 0)
[它一个接一个地读,所以不会有'Black car',而是'black'和'car'。
您是否有想法同时满足这两个条件?
使用标准C函数fgets。例如
char s[N];
while ( fgets( s, sizeof( s ), stdin ) != NULL && s[0] != '\n' )
{
//...
}
N
是一些整数值。
这里是示范节目
#include <stdio.h>
#include <string.h>
int main(void)
{
enum { N = 100 };
char s[N];
while ( fgets( s, sizeof( s ), stdin ) != NULL && s[0] != '\n' )
{
s[ strcspn( s, "\n" ) ] = '\0';
puts( s );
}
return 0;
}
如果输入
Car
Black car
White car
并且在最后输入之后再按一次Enter,则输出为
Car
Black car
White car
此声明
s[ strcspn( s, "\n" ) ] = '\0';
用于从输入的字符串中排除换行符'\n'
。该字符可以通过函数fgets
附加到输入的字符串中。