在C语言中,`scanf`函数使用空格、制表符或换行符作为默认分隔符,因此当输入带空格的字符串时,`scanf("%s", str)`只会读取空格前的部分,导致输入失败。例如,输入"Hello World"时,`scanf`仅捕获"Hello"。
要正确输入带空格的字符串,可采用以下方法:1) 使用`"%[^\n]"`格式说明符,例如`scanf(" %[^\n]", str)`,它会读取一整行直到换行符;2) 使用`gets(str)`(注意:此函数已过时且不安全,可能引发缓冲区溢出);3) 推荐使用`fgets(str, sizeof(str), stdin)`,它不仅读取带空格的字符串,还限制输入长度以确保安全。
实际应用中,建议优先选择`fgets`,因其能有效避免潜在的安全风险,并灵活控制输入长度。
收起