C 如何用/
我有一个具有以下模式的字符串:C 如何用/,c,string,tokenize,C,String,Tokenize,我有一个具有以下模式的字符串: char *str = "ai/aj/module_mat.mod"; 我想选择module_mat作为进一步逻辑的最终字符串。我已经尝试使用rindex,以便获得字符串的最后部分。但我不能在C中这样做。我做错了什么 我正在尝试的代码是- char *first = rindex(str, "/"); char *first = strtok(first, "."); 你的错误就在这里: char *str = "ai/aj/module_mat.mod";
char *str = "ai/aj/module_mat.mod";
我想选择module_mat作为进一步逻辑的最终字符串。我已经尝试使用rindex,以便获得字符串的最后部分。但我不能在C中这样做。我做错了什么
我正在尝试的代码是-
char *first = rindex(str, "/");
char *first = strtok(first, ".");
你的错误就在这里:
char *str = "ai/aj/module_mat.mod";
由于str指向一个常量,因此应为:
const char *str = "ai/aj/module_mat.mod";
现在,编译器应该向您显示其他问题
同样地:
char *first = rindex(str, "/");
因为rindex将指针返回到您传递给它的常量中,所以该指针也应该是const
嗯,斯特克的文件怎么说:
如果找到分隔符字节,将用空字节覆盖它
终止当前令牌,strtok保存指向以下字节的指针
所以strtok修改了指针指向的对象,所以给它传递一个指向常量的指针是不好的!您不能修改常数。您的错误就在这里:
char *str = "ai/aj/module_mat.mod";
由于str指向一个常量,因此应为:
const char *str = "ai/aj/module_mat.mod";
现在,编译器应该向您显示其他问题
同样地:
char *first = rindex(str, "/");
因为rindex将指针返回到您传递给它的常量中,所以该指针也应该是const
嗯,斯特克的文件怎么说:
如果找到分隔符字节,将用空字节覆盖它
终止当前令牌,strtok保存指向以下字节的指针
所以strtok修改了指针指向的对象,所以给它传递一个指向常量的指针是不好的!不能修改常量。首先,字符串文字是不可变的,因此将其绑定到可变字符指针是非常危险的。首先修复您的代码:
const char* str = "ai/aj/module_mat.mod";
接下来,使用strhr:
如果在字符串中找到a/,p将指向它,因此p可以用作原始字符串的后缀子字符串,并且不需要修改原始字符串。我们将p向前推进一步,跳过/并留下字符串的最后一部分。首先,字符串文字是不可变的,因此将其绑定到可变字符指针是非常危险的。首先修复您的代码:
const char* str = "ai/aj/module_mat.mod";
接下来,使用strhr:
如果在字符串中找到a/,p将指向它,因此p可以用作原始字符串的后缀子字符串,并且不需要修改原始字符串。我们将p向前推进一步,跳过/并留下字符串的最后一部分。好的。这很有帮助。如果我想使用strtok、rindex和其他一些可能的函数从上面指定的字符串中只提取module_mat,该怎么办?因为我在那里也遇到了一个错误。@AniruddhaTekade:嗯,你需要一个可变字符串来表示strtok之类的东西,所以你需要复制一个或类似的东西。好的。这很有帮助。如果我想使用strtok、rindex和其他一些可能的函数从上面指定的字符串中只提取module_mat,该怎么办?因为我在那里也遇到了一个错误。@AniruddhaTekade:嗯,你需要一个可变字符串来表示strtok之类的东西,所以你需要制作一个副本或类似的东西。