C语言输入输出字符串

2024-11-07 05:31:35
推荐回答(5个)
回答1:

char ch[5]表示的是定义了一个字符数组(即字符串),数组单元有5个,每个单元都是字符型,由于字符串是用\0作结束的,5个单元的字符数组实际上能完整存储的只能是长度不超过4个字符的字符串,多了的话就要占用其他单元了(这些单元有可能会被系统分配给其他变量,而能够用来存储字符串的就是你定义的这5个单元的字符数组),可能会出现溢出,也就是有时候会出现输出的字符串后面有乱码
char ch表示定义了一个字符变量,用scanf为其赋值的话应该用%c,即scanf("%c",&ch),它只能表示一个字符
char ch[]数组定义不允许[]里为空
char ch[1]表示的也是一个字符数组,所以你可以输入字符串,同样随便输入就有可能溢出

回答2:

在C语言中,输入输出字符串有以下两种方式:
1 用scanf/printf输入输出。
scanf/printf是C语言的格式化输入输出函数,可以用于输入输出各种基础类型,字符串(char*)也在其支持范围内。
格式化字符为%s。
定义
char str[100];
输入
scanf("%s",str);
输出
printf("%s",str);

2 C语言还支持专门的字符串输入输出函数:gets/puts。
gets的作用为,读入一行输入,并将读到的换行符替换为字符串结束符。
puts的作用为,将字符串单行输出,即输出字符串内容后,会自动在结尾增加换行。
定义
char str[100];
输入
gets(str);
输出
puts(str);

回答3:

解答:
ch [5}是说你已经声明了五个字符数组,你说的输入什么后又输出什么,是因为你都储存在地址为ch[0]即第一个字符数组里面。
你声明char ch;char ch[],只是申明数组的名字,比没有数组的大小,所以计算机无法执行,就像你申请一个人户口,你只告诉别人名字,不告诉别人你申请人性别,别人依然不会为你办户口一样。呵呵,一个比方啦。
如果你要限制字符串的长度,大可以每个数组里储存一个字符,这样就可以控制啦。
谢谢,希望能帮到你啦!

回答4:

puts()和gets()都是数组函数,输入或输出前要定义数组
例如:
char a[50];
gets(a);
puts(a);
就是一个简单的输入后再将输入的东西输出,puts()的输入和printf的输出是有一定的区别的,puts()遇到‘\0'就终止,而用printf则不会这样。
例如:
char a[50];
gets(a);
puts(a);
printf("%s",a);
如果正好输入50个字符,则两次输出一致。但如果输入字符不足50个,puts()输出输入的全部字符,而没有输入的不输出,而printf则不能识别'\0',所以会出现乱码。

回答5:

首先,你的理解没有错,char就是一个字符的声明方式.ch[5]就是5个字符.
其次char ch这种声明是没错的.
唯一有问题的是sanf以及printf中的格式字符,如果是char应该用%c.而且如果在程序内部赋值的话,字符串要用""括起,而字符只能用''括起.
这种定义和C++是不一样的,C++完全允许char ch[]这种声明方式的.