c语言字符串,字符数组各种输入输出方法的区别

c语言没有字符串(string)这种类型,但是可以用字符数组代替

输入方法

如果知道字符数组的长度,我们可以用下面的方法输入

char s[10];//长度为10的字符数组
for(int i=0;i<5;i++)//输入五个字符
     scanf("%c",&s[i]);

在不知道长度的情况下,可以用下面的方法输入

char s[100];//定义一个足够长的字符数组
scanf("%s",s);//方法一,注意不需要用&,因为数组名s就是数组的首地址
gets(s);//方法二

方法一和二都可以接收一串字符,区别是,方法一遇到空格和回车就会停止,方法二遇到回车才会停止
举个例子,如果你输入abc abc然后回车,输出的时候,方法一只会输出abc,而方法二可以输出完整的abc abc

输出方法

如果知道长度,可以用for循环直接printf输出每个字符
如果不知道,可以用下面的方法

char s[100];
gets(s);//输入
printf("%s",s);//输出方法一
puts(s);//输出方法二

要注意的是,如果你是用for循环来输入字符的,那么不可以用puts或者%s来输出,否则会出现乱码。(比如vc的烫烫烫)

char s[10];//长度为10的字符数组
for(int i=0;i<5;i++)//输入五个字符
     scanf("%c",&s[i]);
puts(s);//输出乱码
printf("%s",s);//输出乱码

这是因为,如果你输入用的是gets()或者scanf("%s",s),他会自动在字符的最后加上一个'\0',用puts或者%s输出的时候,他会找到字符中的'\0',然后把'\0'前的字符全部输出,而用for则不会给你加'\0'
如果我们把代码改成下面这样

char s[10];//长度为10的字符数组
for(int i=0;i<5;i++)//输入五个字符
     scanf("%c",&s[i]);
s[i]='\0';//给最后加上\0
puts(s);//输出正常
printf("%s",s);//输出正常
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 4,144评论 0 2
  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 4,314评论 2 13
  • C/C++输入输出流总结 前两天写C++实习作业,突然发现I/O是那么的陌生,打了好长时间的文件都没有打开,今天终...
    LuckTime阅读 1,820评论 0 6
  • 参考资料:高教版《全国计算机等级考试二级教程——C语言程序设计》、《21天学通C语言》 用一维字符数组存放字符串 ...
    NoelleMu阅读 839评论 0 1
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 6,385评论 0 10

友情链接更多精彩内容