[英]Segmentation fault in C when iterating through a string
我是C的新手,我應該創建strtok函數。 問題是,我在這段代碼中不斷收到分段錯誤錯誤:
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)
因此,看起來它一直到字符串的結尾和循環的結尾,但實際上並沒有使它成為循環的OUT。 我不確定我錯過了什么。
您正在嘗試修改C中不允許的字符串文字。如果更改char *newstring = "testing, testing, tested."
to char newstring[] = "testing, testing, tested."
,然后你正在修改數組的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.