scanf输入字符串遇到空格?

scanf输入字符串遇到空格?使用 scanf 时对空格处理 问题描述解决办法总结问题描述 scanf 输入字符串 含有空格的字符串 例如 Iloveyou 时 总是在空格处停止扫描 我们用 scanf s str 输入 Iloveyou 字符串后 str 输出却只有 I 这并不是我们想要的 这是因为 scanf 扫描到 I 后面的空格 就认为对 str 的扫描结束 即空格没有被扫描 并舍弃后面的 l

使用scanf时对空格处理?

问题描述

scanf输入字符串(含有空格的字符串,例如:“I love you!”)时,总是在空格处停止扫描。我们用scanf(“%s”,str);输入 “I love you!” 字符串后,str输出却只有 “I” ,这并不是我们想要的。这是因为scanf扫描到 “I” 后面的空格,就认为对str的扫描结束(即空格没有被扫描),并舍弃后面的” love you!”,只得到了 “I” 。

解决办法

在这里给出了两种解决办法,可以让空格也被扫描到str里。

  1. gets()函数 ,用gets()替代scanf();
    gets可以无限读取字符串,不会判断上限,以回车结束读取。其用法为gets(s),其中s为字符串变量(字符串数组名或字符串指针)。简单的理解就是读入一串字符(遇到回车结束),存到s中。

#include<stdio.h> int main() { 
    char str[50]; gets(str); printf("%s\n",str); return 0; } 
  1. scanf(“%[^\n]”,str) ,遇到”\n”结束
    ‘^’含有非的意思
    “%[^\n]“即遇到\n结束。
    如果使用”%[^v]”,那我们输入 “I love you!” ,输出的就是 “I lo” ,现在能懂这个非的意思了吧…






#include<stdio.h> int main() {     char str[50]; scanf("%[^\n]",str);//"%[^v]" printf("%s\n",str); return 0; } 

总结

简单的给出了两种我平时使用scanf时遇到空格的处理方法,希望能对你也有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229711.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午4:04
下一篇 2026年3月16日 下午4:04


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号