(1)C语言没有字符串这种数据类型,所以通常用字符数组来存放字符串,
(2)初始化:
char ch1[10]={‘a’,‘b’,‘c’,‘d’,’\0’};输出的strlen(ch1)仍然为4;
char ch2[10]=“abcd”;系统自动在有效字符后面加入一个空字符,给ch2分配的空间大小为5,但是调用strlen(ch2)时输出的仍是4;
//字符数组输入输出的两种方式
int i;
char ch4[5];
for(i=0;i<5;i++)
{
ch4[i]=getchar();
//scanf("%c",&ch4[i]);
}
for(i=0;i<5;i++)
{
//printf("%c ",ch4[i]);
putchar(ch4[i]);
}
//字符串输入输出的两种方式
char ch4[5];
char ch5[5];
scanf("%s",ch4);
printf("字符串:%s\n",ch4);
//getchar();
gets(ch5);
printf("gets后,puts前\n");
puts(ch5);
解释:当调用scanf()函数,最后按回车键时,系统会把你输入的字符以及回车键都放在输入缓冲区中,然后依次取出数据,当其中数据被取完时,才会等待键盘输入下一条;当执行完printf(“字符串:%s\n”,ch4)时,输入缓冲区中还有回车符,所以gets(ch5)这条语句取出了回车,所以输出的ch5是换行
***吸收缓冲区中的回车符的三种方式:
1.getchar();
2.scanf("%c%*c",&ch);表示不会将ch后的任意字符存入缓冲区
3.scanf(" %c",&ch);这是第二个输入语句