【发布时间】:2022-01-09 17:14:14
【问题描述】:
我正在尝试使用strtok 来获取带有\0 的字符串,而不是用# 替换\0 的空格,因此我使用strtok。但我得到了 - 访问冲突写入位置
在这一行 - char* word = strtok(stringOfNumberSign, delimiters);
char* addNumberSignToString(char* stringOfNumberSign)
{
int numOfWords = 0;
char* delimiters = " ";
char* word = strtok(stringOfNumberSign, delimiters);
while (word)
{
numOfWords++;
word = strtok(NULL, delimiters);
}
return stringOfNumberSign;
}
int main()
{
char* stringForNumberSign = "welcome to hello world";
char* result;
result = addNumberSignToString(stringForNumberSign);
printf("%s", result);
}
【问题讨论】:
-
为什么我们要猜测 stringOfNumberSign 是如何声明和初始化的?
标签: c undefined-behavior c-strings strtok string-literals