Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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
如何在scanf字符串中包含空格?_C_Char_Scanf - Fatal编程技术网

如何在scanf字符串中包含空格?

如何在scanf字符串中包含空格?,c,char,scanf,C,Char,Scanf,只要“主”变量只有一个字,该程序就可以工作。例如,CIS是有效输入,但计算机信息系统不是。我该如何解决这个问题 #include<stdio.h> int main() { char major [51]; int classes; printf("What is your major? "); scanf("%50s", major); printf("How many classes are you taking this semester? "); scanf("%d",

只要“主”变量只有一个字,该程序就可以工作。例如,CIS是有效输入,但计算机信息系统不是。我该如何解决这个问题

#include<stdio.h>

int main()
{
char major [51];
int classes;

printf("What is your major? ");
scanf("%50s", major);

printf("How many classes are you taking this semester? ");
scanf("%d", &classes);

printf("Your major is %s and you are taking %d classes this semester.\n", major, classes);
}
#包括
int main()
{
查·梅杰[51];
int类;
printf(“你的专业是什么?”);
scanf(“%50秒”,大调);
printf(“你这学期要上多少课?”);
scanf(“%d”类和类);
printf(“你的专业是%s,本学期你要上%d课。\n”,专业,课程);
}

您的问题是扫描停止在第一个空白处。你需要做的是一直读,直到你读到了结束行字符

使用scanf可以做到这一点,但有更好的选择
fgets()
立刻浮现在脑海中

对堆栈溢出的一些搜索将产生大量关于
scanf()
vs
fgets()
vs其他的主题。

您的问题是扫描停止在第一个空白处。你需要做的是一直读,直到你读到了结束行字符

使用scanf可以做到这一点,但有更好的选择
fgets()
立刻浮现在脑海中

对堆栈溢出的一些搜索将产生大量关于
scanf()
vs
fgets()
vs其他的主题。

您可以使用
%50[^\n]
匹配多达50个字符,直到遇到换行符,并将它们存储在
主要[]
中。换行符将留在输入流中,但
%d
转换说明符会自动跳过前导空格字符


请注意,如果用户输入的字符数超过50个,则在调用
scanf()
获取类数之前,输入流中将有多余的字符需要丢弃。

您可以使用
%50[^\n]
匹配最多50个字符,直到遇到换行符,并将它们存储在
major[]
中。换行符将留在输入流中,但
%d
转换说明符会自动跳过前导空格字符

请注意,如果用户输入的字符超过50个,则在调用
scanf()
获取类数之前,输入流中将有多余的字符需要丢弃。

重复问题:重复问题的可能重复:重复问题的可能重复