给定的 C 代码有什么问题?为什么我无法得到想要的输出?
当我输入 "123 + hello = 234"
时,我希望输出为 "123 hello 234"
。
但是输出是 "123 + hello"
?
请有人解释逻辑有什么问题以及获取输入的正确方法。
另请推荐引用资料以进一步阅读类似主题。
#include<stdio.h>
int main()
{
char str1[11],str2[11],str3[11],ch1,ch2;
scanf("%s",str1);
scanf("%c",&ch1);
scanf("%s",str2);
scanf("%c",&ch2);
scanf("%s",str3);
printf("%s %s %s\n",str1,str2,str3);
return 0;
}
最佳答案
根据您的输入
123 + hello = 234
空格很重要。 123
之后的紧接空白转到 ch1
和 +
到 str2
。
如果 %c
中没有明确的空格,它会将输入中的空格视为 有效 扫描的输入。
尝试类似的东西
scanf(" %c",&ch1);
^
|
这告诉 scanf()
丢弃所有前导空白字符并读取下一个第一个 非空白 字符,在您的例子中为 +
。
旁注:始终通过检查返回值来检查 ogf scanf()
是否成功。良好实践
关于C 字符串。未获得所需的输出。我怎样才能输入这样的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27654332/