[英]Why is the last char being cut from the string?
為什么從下面的字符串中刪除最后一個字符?
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”。
通過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]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.