
C语言中的scanf函数输入字符串时,当遇到空格或回车时,认为字符串已经输入到结尾,但是如果开头输入一个空格,scanf还是会继续往下存储直到遇到第二个空格或回车。
因此,要在字符串数组中输入空格,就不要使用scanf,使用gets()或c++的cingetline()函数解决。
祝好运!
char ch[5]表示的是定义了一个字符数组(即字符串),数组单元有5个,每个单元都是字符型,由于字符串是用\0作结束的,5个单元的字符数组实际上能完整存储的只能是长度不超过4个字符的字符串,多了的话就要占用其他单元了(这些单元有可能会被系统分配给其他变量,而能够用来存储字符串的就是你定义的这5个单元的字符数组),可能会出现溢出,也就是有时候会出现输出的字符串后面有乱码
char ch表示定义了一个字符变量,用scanf为其赋值的话应该用%c,即scanf("%c",&ch),它只能表示一个字符
char ch[]数组定义不允许[]里为空
char ch[1]表示的也是一个字符数组,所以你可以输入字符串,同样随便输入就有可能溢出
一、字符数组的定义
一维字符数组:用于存储和处理1个字符串,其定义格式与一维数值数组一样。
char str[20];
二维字符数组:用于同时存储和处理多个字符串,其定义格式与二维数值数组一样。
char country[10][20];
country[i]:第i个字符串
二.字符数组的初始化
字符数组的初始化
1可以通过为每个数组元素指定初值字符来实现。
char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};
char str[ ]={"I am happy"}; 可以省略花括号,如下所示
char str[ ]="I am happy";
char country[10][20]={“china”,”japanese”,……};
注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的
char str[15];
str="I am happy";
strcpy(str, "I am happy");
不是用单个字符作为初值,而是用一个字符串(注意:字符串的两端是用双引号“”而不是单引号‘’括起来的)作为初值。
‘a’ “a”区别
三、字符数组的引用
字符数组的逐个字符引用,与引用数值数组元素类似。
(1)字符数组的输入
除了可以通过初始化使字符数组各元素得到初值外,也可以使用getchar()或scanf()函数输入字符。
例如:
char str[10];
…… for(i=0; i<10; i++)
{ scanf(\"%c\", &str);
fflush(stdin); /清除键盘输入缓冲区/
}
这里只是一部分具体你查看这里:http://wwweehomecn/thread-95295-1-1html
C语言中,可以用gets函数来接收输入的字符串(包含空格)。
格式:gets(字符数组名);
功能:gets函数用于将输入的字符串内容存放到指定的字符数组中,输入结尾的换行符'\n'被换成'\0'存储在该数组中。
举例说明如下:
char
str[20];
//
定义一个字符数组,大小为20个字节
gets(str);
//
将用户输入的字符串(可以包含空格)存储到字符数组str中,以回车结束输入
printf("%s",
str);
//
输出用户输入的字符串(包含空格)
注:使用gets函数时,需将头文件#include<stdioh>包含到源文件中。
#include <stdioh>
#include <stringh>//为strlen()函数提供原型
int main()
{ char str[100];
char ch[100];
int i,j=0,length;
printf("请输入字符串: ");
gets(str);//将输入的字符串存入数组str[]中
length=strlen(str);//计算字符串的长度
for(i=0;i<length;i++)//将原字符串中的下标为偶数位元素存入新数组中
{
if(i%2==0)
{
ch[j]=str[i];
j++;
}
}
printf("输入的字符串为: ");
puts(str);
printf("新的的字符串为: ");
for(i=0;i<j;i++)//输出存入ch[]数组中的新字符串
{
printf("%c",ch[i]);
}
printf("\n");
return 0;
}
用数组的:
#include <stdioh>void addspace(char s[]){
int n;
n=0;
while(s[n]) n++;
s[n2]='\0';
n--;
while(n>=0){
s[n2]=s[n];
s[n2+1]=32;
n--;
}
}
main(){
char s[255];
gets(s);
addspace(s);
puts(s);
}
用指针的:
#include <stdioh>void addspace(char s){
int n;
n=0;
while((s+n)) n++;
(s+n2)='\0';
while(n>=0){
(s+n2)=(s+n);
(s+n2-1)=32;
n--;
}
}
main(){
char s[255];
gets(s);
addspace(s);
puts(s);
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)