2009-10-02 175 views
1

可能重複:
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, "#"); 
+0

複製 - http://stackoverflow.com/questions/1508838/how-to-copy-char-str-to-char-c-in-c – ChrisF

+0

但不同的問題。我要求確切的編碼問題。這是關於什麼的。 –

+0

你想用第3-5行做什麼,將兩個副本和最後一個字符的設置設置爲\ 0?如果插入一些有用的printf,你知道它在死之前有多遠? – Joe

回答

1

您的代碼不會在下面的崩潰對我來說:

#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, "#"); 
} 
+0

他沒有使用:strcpy(c,token); 也許你可能會更清楚爲什麼這個額外的步驟是關鍵? – Egwor

+0

@Egwor在之前的版本中是一樣的。我想這是在令牌指向太長的字符串的情況下導致問題的原因。 –

0

此代碼的工作,已經指定了正確的包括?

#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); 
} 
相關問題