簡體   English   中英

迭代字符串時C中的分段錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM