我對C非常陌生,我應該創建strtok函數。問題是,我不斷收到分段錯誤在此代碼:通過字符串迭代C中的分段錯誤
char *newstring = "testing, testing, tested."
while(*newstring != '\0'){
/*replace delimiters with nulls*/
printf("STARTING ITERATION\n");
if(*newstring ==','){
*newstring='\0';
}
printf("newstring char in loop: %c\n", *newstring);
/*printf("delimiters char in loop: %c\n", *delimiters);*/
newstring++;
printf("END OF ITERATION\n");
}
printf("OUT OF ITERATION");
輸出是這樣的:
STARTING ITERATION
newstring char in loop: t
END OF ITERATION
STARTING ITERATION
newstring char in loop: e
END OF ITERATION
STARTING ITERATION
newstring char in loop: s
END OF ITERATION
STARTING ITERATION
newstring char in loop: t
END OF ITERATION
STARTING ITERATION
newstring char in loop:
END OF ITERATION
STARTING ITERATION
newstring char in loop: t
END OF ITERATION
STARTING ITERATION
newstring char in loop: e
END OF ITERATION
STARTING ITERATION
newstring char in loop: s
END OF ITERATION
STARTING ITERATION
newstring char in loop: t
END OF ITERATION
STARTING ITERATION
newstring char in loop:
END OF ITERATION
STARTING ITERATION
newstring char in loop: t
END OF ITERATION
STARTING ITERATION
newstring char in loop: e
END OF ITERATION
STARTING ITERATION
newstring char in loop: s
END OF ITERATION
STARTING ITERATION
newstring char in loop: .
END OF ITERATION
Segmentation fault (core dumped)
所以,它看起來像它會一路走過來的字符串的結束和循環的最後一步,但實際上並沒有使它退出循環。我不知道我錯過了什麼。
你正在修改字符串字面..這是未定義的行爲。試試'char newstring [] =「測試,測試,測試。」;'而是。 – yano
指針不是數組。您的代碼調用未定義的行爲。您嘗試修改_string literal_。 – Olaf
你知道Literal String是什麼嗎? – Michi