簡體   English   中英

為什么要從字符串中刪除最后一個字符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM