字符串的声明,输入,运算,输出
严格来说,字符串并不是一种新的类型,只是特殊的字符数组,特殊之处在于字符串以'\0'作为结束符。
字符串的声明和字符数组完全相同。
1 | char s[80]; |
字符数组的大小可以根据情况来设置,80是命令行下面一行的长度。如果你并清楚需要字符数组的大小,不妨设置得大一些。
字符串的输入
1 | scanf("%s", s); |
如果用户输入是
1 | Great |
那么字符数组的内容是
细心的同学会注意到,这里 scanf 中的变量 s 并没有在前面加通常的取地址符号 &,因为 s 本身就是地址。 scanf 会在字符串的末尾做个标记,自动加上'\0', 表示字符串的结束。
字符串的输出
1 | printf("%s", s); |
下面是完整的程序。
1 2 3 4 5 6 7 8 9 | #include <stdio.h> int main(int argc, char *argv[]) { char s[80]; scanf("%s", s); printf("%s\n", s); return 0; } |
你输入“Find Your Greatness”看看会发生什么?
C语言还提供了另外一个函数 gets 用于读取一整行的内容(从当前位置直到遇到回车符)。
对应于gets,库函数还提供了 puts 用于输出字符串的内容,并自动加上换行。
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> #inlucde <string.h> int main(int argc, char *argv[]) { char s[80]; gets(s); printf("%s\n", s); puts(s); printf("%d\n", strlen(s) ); return 0; } |
上面的字符串处理函数 strlen 用于计算字符串的长度。