我想了解更多關於C的知識,我想知道是否有人可以澄清這裏發生了什麼。我得到一個編譯器警告:「警告:分配使得整數指針沒有投@味精[msglen + 1] =‘\ 0’」ansi-c:賦值使指針中的整數不會轉換
char *msg = NULL;
int len = 10;
int msglen = 0;
while(<argument>) {
msg = (char *)calloc(len, 1);
strncpy(msg, <some string>, len);
msglen = strlen(msg);
msg[msglen+1] = "\0";
謝謝,我很欣賞你的幫助!
您正在使用'strncpy()'。這幾乎可以肯定[不是最好的解決方案](http://the-flat-trantor-society.blogspot.com/2012/03/no-strncpy-is-not-safer-strcpy.html)。 –
'msglen = strlen(msg);'有可能導致未定義的行爲,因爲'strncpy'通常不會終止。 –