来看一下以下程序是否正确?
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4
5 int main(void)
6 {
7 char string[20] = "abcdef";
8 strcat(string, '!');
9
10 return 0;
11 }
来编译下吧
root@xue-desktop:/home/mo/C_program_faqs/chapter8# gcc 8_1.c -g -o 8_1
8_1.c: In function ‘main’:
8_1.c:8: warning: passing argument 2 of ‘strcat’ makes pointer from integer without a cast
/usr/include/string.h:135: note: expected ‘const char * __restrict__’ but argument is of type ‘int
由于strcat()是用来拼接字符串的,因此以上程序中的'!'会出错,需要使用strcat(string, "!");
以下程序输出结果是什么?
1 #include <stdio.h>
2 #include <string.h>
3
4 int main(void)
5 {
6 char *string = "values";
7
8 if ("values" == string)
9 {
10 printf("equal \n");
11 }
12 else
13 {
14 printf("Not equal \n");
15 }
16
17 return 0;
18 }
其实,以上的程序可能会输出equal, 也有可能会输出Not equal, 这是因为上述代码中的==操作符比较的是两个指针——指针变量string的值和字符串常量"values"的指针值——看它们是否相等,也就是说,看它们是否指向同一个位置。
要比较两个字符串,一般使用库函数strcmp():
if (strcmp(string, "values") == 0)