C语言复习—字符数组

数组名代表数组的起始地址,所以在使用scanf输入数组时可不用加&

  1. scanf不能输入带空格的字符串

    1
    2
    char str[8];
    scanf("%s",str);
  2. printf输出一个或多个字符串时,输出项用数组名或数组元素的地址,直到遇见字符串结束标志'\0'才会结束输出

    1
    2
    3
    4
    char str[13]="c & Computer";
    printf("%s\n%s\n",str,&str[4]);
    输出结果为:c & Computer
    Computer
  3. gets函数输入字符串时,可包含空格,自动将回车转换为结束标志'\0'

    1
    2
    char str[13];
    gets(str);

    如果输入为:C & Computer[回车],则将字符串C & Computer'\0'存入str中(此处的\0是将回车转换为\0

  4. puts函数输出字符串时,自动将字符串结束标志'\0'转换为回车换行符

    1
    2
    3
    4
    char str[16]="Chine\nChongQing";
    puts(str);
    输出结果为:China
    ChongQing

总结

使用scanf输入字符串时,不能输入空格
使用gets输入字符串时,可以包含空格,且gets会自动将回车转换为'\0'
使用printf输出字符串时,输出项可用数组名或数组元素的地址(&str[4]),遇见'\0'则停止输出
使用puts输出字符串时,自动将'\0'转换为回车符

例子

  • 统计单词个数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "stdio.h"
#define N 81
int WordNum(char str[])
{
int word=0,num=0,i;
for(i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
word=0;
else if(word==0)
{
word=1;
num++;
}
}
return num;
}
int main()
{
char str[N];
int num;
printf("输入一行字符:\n");
gets(str);
num=WordNum(str);
printf("单词个数为:%d",num);
getchar();
return 0;
}