为什么要从字符串中删除最后一个字符?

时间:2013-12-05 11:09:26

标签: c arrays char

为什么从下面的字符串中删除最后一个字符?

char *data[10];
char napis[] = "Witam";

data[0] = (char*) malloc (sizeof(char) * strlen(napis+1));

strncpy(data[0], napis, strlen(napis+1));
data[0][strlen(napis+1)] = '\0';

printf("%s\n", data[0]);

似乎一切都应该没问题,但是程序会返回一个字符(最后一个)。

将“Wita”改为“Witam”。

1 个答案:

答案 0 :(得分:2)

strlen(napis+1)你做一个指针增量,所以你计算chararray'itam \ 0'的长度。

要在char的长度上加1,执行strlen(napis)+1是正确的。

char *data[10];
char napis[] = "Witam";

data[0] = (char*) malloc (sizeof(char) * (strlen(napis)+1));

strncpy(data[0], napis, strlen(napis)+1);
data[strlen(napis)+1] = '\0';

printf("%s\n", data[0]);