C语言小白的字符串输入学习(还没学c++)

本文介绍了在C语言学习过程中,如何处理scanf函数在读取字符串时遇到空格的问题,以及scanf("%[^ ]%*c")、gets函数和使用getchar()循环输入字符的方法,帮助初学者理解和解决字符串输入的常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:现在面临的c初学阶段,在刷题的过程中遇到很多关于字符串的输入问题, 在听了一些网课和找了一些后想自己总结一下, 希望有大佬能帮我指出文中内容的错误。(大一新生)

注释:下面的例子中的字符串数组都用arr表示。

 一、scanf("%s", arr)

图一中的代码是输入一段字符串到字符串数组arr中并输出,此例中的 scanf("%s", arr) 正是起到了输入字符串的作用, scanf("%s", arr) 的局限性在于不能完整读取含有空格的字符串,如:当输入 “hello world” 时图一中的程序只能读取到 “hello” 而后面的空格和 “world” 无法一次全部读取。

//图一
#include <stdio.h>
int main() {
    char arr[100] = {0};
    scanf("%s", arr);
    printf("%s\n", arr);
    return 0;
} 

如果要完整读取 “hello world”  ,可以如图二中的程序所示创建两个字符串数组来分别保存 “hello” 和 “world” 。但也存在缺陷,就是 “hello world” 中的空格无法打印,这正与 scanf("%s", arr) 的特点有关 它根本不会读入空格,就算你开始输入时时只输入空格,当按下回车后, scanf("%s", arr) 并不会读取你的空格,而是继续等待你输入字符串。用图二程序输入 “hello world” 后, scanf("%s", arr) 读取了 “hello” 而遇到空格后结束读取,但并未从健盘缓冲区中跳过空格(标记句一),所以 scanf("%s", arr1) 从空格开始读取,但由于无法读取空格,最终只读取 “world” 。

//图二
#inclu
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值