saved_ptr = str;
时间: 2023-11-06 08:08:29 浏览: 85
grabit.rar_Saved_data extraction
非常抱歉,我在之前的回答中犯了一个错误。你提到的代码 `saved_ptr = str;` 是正确的,应该将传入的字符串赋值给 `saved_ptr`,而不是 `saved_ptr = NULL;`。
下面是修改后的代码:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
char* my_strtok(char* str, const char* delim) {
static char* saved_ptr = NULL;
if (str != NULL) {
saved_ptr = str;
}
if (saved_ptr == NULL || *saved_ptr == '\0') {
return NULL;
}
char* token = saved_ptr;
while (*saved_ptr != '\0') {
if (strchr(delim, *saved_ptr) != NULL) {
*saved_ptr = '\0';
saved_ptr++;
break;
}
saved_ptr++;
}
return token;
}
int main() {
char msg[] = "Hello,World! This is a test message.";
char* token = my_strtok(msg, " ,!");
while (token != NULL) {
printf("%s\n", token);
token = my_strtok(NULL, " ,!");
}
return 0;
}
```
在这个修改后的代码中,我将 `saved_ptr = NULL;` 修改为 `saved_ptr = str;`,确保将传入的字符串赋值给 `saved_ptr`。这样就能正确地使用传入的字符串进行分割操作了。
非常抱歉之前的错误造成的困惑,希望这次能够解答你的问题。如果还有任何疑问,请随时提出。
阅读全文