【发布时间】:2017-11-17 12:59:13
【问题描述】:
在这部分代码中:
char* data;
char num[10];
sprintf(num, "%d", 260);
strcat(data, num);
strcat(data, "\0");
sprintf(num, "%d", 130);
strcat(data, num);
sprintf(num, "%d", 128);
strcat(data, num);
printf("Data: %s", data);
正在打印:
Data: 260130128
为什么会这样?空终止符不应该终止打印吗?
谢谢
编辑:
数据之前已经初始化过了,我是从函数中获取的。
为什么不只打印 260?我该怎么做?
【问题讨论】:
-
data尚未初始化 -
您不需要手动附加空字符,
strcat已经这样做了,strcat(data, "\0");绝对什么都不做(更不用说字符串文字本身也是空终止的,所以它包含在这种情况下有两个空字符)。您需要做的是将data初始化为可以保存所有这些值的东西。 -
您可能需要阅读 C 教科书中处理字符串的章节。
-
@lurker 已编辑,抱歉!
标签: c strcat null-terminated