我对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