C语言之字符串的存储和表示(输入和输出) 您所在的位置:网站首页 C语言多组输入字符串 C语言之字符串的存储和表示(输入和输出)

C语言之字符串的存储和表示(输入和输出)

2023-10-13 22:03| 来源: 网络整理| 查看: 265

C语言之字符串的存储和表示

逐个字符输入输出字符串

在C语言中字符串是保存在数组中的,因此在输入一串字符的时候我们需要先定义一个数组。

#define STR_LEN 80 char str[STR_LEN+1];

一般我们习惯将宏定义STR_LEN设置为字符串的长度,但字符串需要用‘\0’结尾所以在定义数组的时候我们要加一。 逐个输入我们需要知道字符串的长度,以此才能判断循环的次数

for(int i=0;i putchar(str[i]); } 整体输入输出字符串

两种方式 一、

scanf("%s",str); printf("%s\n",str);

二、

gets(str); puts(str);

其中第二种的输出在输出时会自动换行,所以这两个代码的输出效果是一样的。 不同的是输入

用scnaf输入字符串

因为以%s输入字符串时,在开始读之前会跳过回车、空格、换行符这些空白字符,再次遇到空白字符就就读入结束了。因此这种方法无法读入空格、制表符这些空白字符 例如,运行以下代码时

#include #define STR_LEN 80 int main() { char str[STR_LEN+1]; printf("input a sting:"); scanf("%s",str); printf("%s\n",str); return 0; }

我们输入hellow world 运行结果 hellow后面的字符串就不会输出出来

用gets输入字符串

因为gets函数是以换行作为终止符的,所以我们可以输入空格或者制表符,这样空格也是字符串的一部分了

#include #define STR_LEN 80 int main() { char str[STR_LEN+1]; printf("input a sting:"); gets(str); return 0; }

我们输入hellow world 运行结果 此外scanf函数无法从输入缓存区读走换行符,什么意思呢? 看这个代码

#include #define STR_LEN 80 int main() { char str[STR_LEN+1]; printf("input a sting:"); scanf("%s",str); printf("%s\n",str); printf("input a sting:"); gets(str); printf("%s\n",str); return 0; }

我们输入hellow

运行结果 我们会发现本来我们还需要再用gets输入一个字符串,结果自动输入了换行符 总结就是用scanf输入字符串的时候,他不会读入换行符。因此,换行符还会在输入缓存区中,等待下一次的输入。那如果我们需要用scanf去输入字符串如何解决这个问题呢? 很简单,在输出的后面加一行getchar();这样就能读走换行符

#include #define STR_LEN 80 int main() { char str[STR_LEN+1]; printf("input a sting:"); scanf("%s",str); printf("%s\n",str); getchar();//读走输入缓冲区中的换行符 printf("input a sting:"); gets(str); printf("%s\n",str); return 0; }

我们输入hellow 在这里插入图片描述 会提醒让我们进行下一次的输入,这样就解决了scanf后面再有输入的话不影响的问题。

而gets()函数就会读走输入缓存区的回车符,因此不需要在gets()函数后加入getchar()去消去输入缓存区的回车符。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有