尝试使用strtok()读取字符串中的所有单词,但是到达末尾时它将返回异常,而我只是想不通为什么。对不起,如果重复。
strcpy(now, strtok(text, del));
do {
if (palindrome(now))
add_list(now);
p = strtok(NULL, del);
strcpy(now,p);
} while (p);
我得到这个:
Exception thrown at 0x7C07EE43 (ucrtbased.dll) in strings.exe: 0xC0000005: Access violation reading location 0x00000000.
我看到代码有2个问题:
的第一个呼叫strtok
可以返回NULL
。如果发生这种情况,您不应再致电strtok
。
的第二个呼叫strtok
可以返回NULL
。在这种情况下strcpy(now,p);
将崩溃,因为它的参数可能不是NULL
。
将代码更改为以下内容(未经测试):
p = strtok(text, del);
while (p) {
strcpy(now, p);
if (palindrome(now))
add_list(now);
p = strtok(NULL, del);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句