beat365网址官网网站

【C语言】三种方式实现字符串(字符数组)的输入输出

【C语言】三种方式实现字符串(字符数组)的输入输出

前言

1. 由于C语言没有字符串类型,字符串的使用需要依靠字符数组实现,本文用 3 个例子实现字符数组的输入输出操作。

2. scanf(); 从键盘输入数据时,遇到 “空格”、“回车” 都会终止。若要接受空格,使用 gets(); 代替 scanf(); 。

3. 多个 scanf(); 同时出现时,上一个 scanf(); 残留的 “回车” 会导致下一个 scanf(); 只读到了 “空格”,若要避免,需在使用 scanf(); 后,使用 fflush(stdin); 。

4. 本文中出现的 gets() 、puts() 函数需引入 string.h 头文件

#include

方法 1 运用字符串函数

char ch1[20];//字符数组

gets(ch1);

puts(ch1);

方法 2 运用一般输入输出函数

char ch2[20];//字符数组

scanf("%s",ch2);

printf("%s\n",ch2);

fflush(stdin);//用完 scanf 后,清除缓冲区

注:需要特别注意的是,使用完 scanf 后,要使用 fflush(stdin) 来清空缓冲区,否则下一次输入操作会读取本次操作剩余的“回车键”。

方法 3 指向字符串的指针 + 中间变量

char buffer[20];

char *ch3;

gets(buffer);

ch3=buffer;

puts(ch3);

注:由于定义指针时,该指针并未初始化,所以不可以直接把输入的值赋给指针,必须经过一个中间变量。

附录

完整测试代码如下:

#include

#include

int main()

{

// 1

printf("1\n");

char ch1[20];

gets(ch1);

puts(ch1);

// 2

printf("2\n");

char ch2[20];

scanf("%s",ch2);

printf("%s\n",ch2);

fflush(stdin);//用完 scanf 后,清除缓冲区

// 3

printf("3\n");

char buffer1[20];

char *ch3;

gets(buffer1);

ch3=buffer1;

puts(ch3);

return 0;

}

结果如下:

相关推荐

365bet体育在线比分 什么平台买手机靠谱 买手机的app的排行榜
365审核要多久 微信加密如何取消
365bet体育在线比分 藏传佛教的活佛转世