字符和字符串

     来看一下以下程序是否正确?

  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)






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值