C 字符串。未获得所需的输出。我怎样才能输入这样的数字

标签 c whitespace scanf format-specifiers

给定的 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/

相关文章:

c - 使用 scanf 时获取无限运行的程序

objective-c - 将字符串添加到数组

asp.net-mvc-3 - 在 Visual Studio 10 ASP.NET MVC3 中使用

Xcode中的C编程,scanf不读取int

c - scanf 会在巨大的字符表上中断吗?

html - 在 anchor 内添加了无法解释的空间

c - 随机消失的结构

转换包含十六进制数字的 char*

c - 动态分配的变量大小

计算换行符、空格和制表符