Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何用/_C_String_Tokenize - Fatal编程技术网

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之类的东西,所以你需要制作一个副本或类似的东西。