0
如果我註釋掉「printPigWord(temp);」這個程序可以正常工作。並且它將這些詞標記爲沒有問題,但是一旦我將該行添加回來,它就不會執行下一個標記。它將打印1個「豬拉丁語」單詞並返回到主體,然後出現分段錯誤。我不知道是什麼原因造成的。使用strtok時出現Segfault
int main (void){
char phrase[50];
char *token, c, temp[20];
int i=0;
printf("Enter a phrase to be translated into pig latin: ");
c = getchar();
while(c != '\n'){
phrase[i++] = c;
c = getchar();
}
phrase[i] = '\0';
token = strtok(phrase, " ");
while(token != NULL){
strcpy(temp, token);
printPigWord(temp);
token = strtok(NULL, " ");
}
return 0; /*Successful completion*/
}
void printPigWord(char token[20]){
char first[1];
char temp[20];
/*save first letter */
strncpy(first, token, 1);
first[1] = '\0';
/*add ay to end of first letter*/
strcat(first, "ay");
/*remove first letter of token*/
strcpy(temp, &token[1]);
/*add first letter+ay to end of token*/
strcat(temp, first);
/*print out token*/
printf("%s\n", temp);
}
修復它!謝謝! – 2015-02-24 21:33:40