C 如何跨多行、多个空格等读取用户输入?
我试图扫描一些用户输入,但当我运行程序时,我得到的只是一堆3/4的分数 我需要能够扫描字符、空格和换行符。如果用户输入以下内容:C 如何跨多行、多个空格等读取用户输入?,c,arrays,while-loop,char,scanf,C,Arrays,While Loop,Char,Scanf,我试图扫描一些用户输入,但当我运行程序时,我得到的只是一堆3/4的分数 我需要能够扫描字符、空格和换行符。如果用户输入以下内容: Hello this is a test123 234 !!! 一旦他们输入完想要输入的内容,他们就会按CTRL+D,这样我就知道停止阅读他们所说的内容 这是我的密码: char user_input[1000]; int i = 0; while (scanf("%c", &user_input[i]) == 1) {
Hello this
is
a test123 234 !!!
一旦他们输入完想要输入的内容,他们就会按CTRL+D,这样我就知道停止阅读他们所说的内容
这是我的密码:
char user_input[1000];
int i = 0;
while (scanf("%c", &user_input[i]) == 1) {
i++;
}
你的代码没问题。以下节目:
#include <stdio.h>
int main()
{
char user_input[1000];
int i = 0;
while (scanf("%c", &user_input[i]) == 1) {
i++;
}
user_input[i] = '\0';
printf("%d\n", i);
printf("%s", user_input);
return 0;
}
但是,scanf
通常用于扫描格式化的
输入。我建议使用getchar()
或fgets()
为了更好地控制用户输入,您可以使用读取用户输入的字符,当用户输入CTRL-D时,通常会返回EOF。之后,可以解析字符串以提取输入的分数等
如果您仍然想使用SCANF()之类的东西,您可以考虑用调用来替换它,以防止缓冲区溢出。(具有指定的最大字符数)
/*gcc-o test\u getchar test\u getchar.c&./test\u getchar*/
#包括
int main()
{
字符用户_输入[1000]={0};
int i=0;
字符c;
而((c=getchar())!=EOF){
/*在这里用c做点什么*/
用户输入[i]=c;
++一,;
如果(i>=sizeof(用户输入)-1)
打破
}
用户输入[i]=0;
printf(“用户输入:%s\r\n”,用户输入);
返回0;
}
@IanAbbott是的,这似乎解决了问题。感谢根据您在程序的其余部分中如何使用user\u input
,当循环终止时,您可能需要向其添加空终止符。
42
Hello this
is
a test123 234 !!!
int main(void) {
char user_input[1000];
int i = 0;
int temp;
while ((temp = getchar()) != EOF) {
user_input[++i] = temp;
}
user_input[i] = '\0';
}
/* gcc -o test_getchar test_getchar.c && ./test_getchar */
#include <stdio.h>
int main()
{
char user_input[1000] = {0};
int i = 0;
char c;
while ((c = getchar()) != EOF) {
/* do something with c here... */
user_input[i] = c;
++i;
if (i >= sizeof(user_input)-1)
break;
}
user_input[i] = 0;
printf("user input: %s\r\n", user_input);
return 0;
}