[英]scanf in a loop till carriage return
我试图读取多个字段的用户输入。 但是没有指定字段数。 我想读回所有的字,直到回车。 我试过这段代码,但它不起作用:
char str[256];
while(1)
{
scanf("%s", str);
if(str[strlen(str)] == '\n')
break;
else
printf("Got %s\n", str);
}
用户输入示例:
1.存储文件1
我需要解析store和file1并打破循环。
2.存储file1 file2
我需要解析store,file1和file2并打破循环。
想知道如何在回车时突破循环。
谢谢。
采用
char str[256]
scanf("%255[^\n]", str); /*edit*/
它将读取换行符或(编辑:) 255个字符,以先到者为准。
您可以使用fgets()读取,然后使用strtok()将缓冲区拆分为标记
这样你可以完全控制一切。
目前,你的char数组str [256]没有任何东西或垃圾,所以当你查找时,你将找不到它。
尝试这个。
char str[256];
while(1)
{
scanf("%s", str);
printf("Got %s\n",str);
if(fgetc(stdin) == '\n')
break;
}
char str[256]
scanf("%256[^\n]", str);
小心那些代码。 它将溢出char数组以获得长字符串。 您希望scanf中的%255容纳空终止符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.