C语言字符串处理的困惑

来源:百度知道 编辑:UC知道 时间:2024/06/10 21:12:44
请问为什么
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<strings.h>

main()
{
char *b=malloc(sizeof(char)*10);
bzero(b,sizeof(char)*10);

strcpy(b,"'a\0b");
strcat(b,"c");

printf("%s\n",b);

}
输出 abc 而不是 a
编译器为gcc

strcpy(b,"'a\0b");//是不是多打了单引号??这句的结果是b="a\0"
strcat(b,"c");//这句的结果是b="ac\0"
所以结果应该是ac吧??怎么是abc?疑惑。。
结果跟编译器无关吧。。。

strcpy(b,"'a\0b");
strcat(b,"c");
printf("%s\n",b);

应当输出 'ac

strcpy(b,"'a\0b"); // b 里有字符 'a 和字符串结束符 "\0"
strcat(b,"c"); // 添加字符 "c". b 里有字符 'ac 和字符串结束符 "\0"

检查一下你的程序书写是否与你贴上来的程序一样。检查是否编译正确。