为什么从下面的字符串中删除最后一个字符?
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”。
答案 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]);