可能重複:
How to copy char *str to char c[] in C?這個C代碼爲什麼給我一個seg錯誤?
char *token = "some random string";
char c[80];
strncpy(c, token, sizeof c - 1);
c[79] = '\0';
char *broken = strtok(c, "#");
可能重複:
How to copy char *str to char c[] in C?這個C代碼爲什麼給我一個seg錯誤?
char *token = "some random string";
char c[80];
strncpy(c, token, sizeof c - 1);
c[79] = '\0';
char *broken = strtok(c, "#");
您的代碼不會在下面的崩潰對我來說:
#include <string.h>
main()
{
char *token = "some random string";
char c[80];
strcpy(c, token);
strncpy(c, token, sizeof c - 1);
c[79] = '\0';
char *broken = strtok(c, "#");
}
他沒有使用:strcpy(c,token); 也許你可能會更清楚爲什麼這個額外的步驟是關鍵? – Egwor
@Egwor在之前的版本中是一樣的。我想這是在令牌指向太長的字符串的情況下導致問題的原因。 –
此代碼的工作,已經指定了正確的包括?
#include <string.h> /*
#include <stdio.h>
#include <stdlib.h>
int
main() {
/* ORIGINAL CODE */
char *token = "some random string";
char c[80];
strcpy(c, token);
strncpy(c, token, sizeof c - 1);
c[79] = '\0';
char *broken = strtok(c, "#");
/* ADDED THE FOLLOWING LINES */
printf("%s\n", broken);
exit(1);
}
複製 - http://stackoverflow.com/questions/1508838/how-to-copy-char-str-to-char-c-in-c – ChrisF
但不同的問題。我要求確切的編碼問題。這是關於什麼的。 –
你想用第3-5行做什麼,將兩個副本和最後一個字符的設置設置爲\ 0?如果插入一些有用的printf,你知道它在死之前有多遠? – Joe