Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.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程序中检查字符串的结尾是否有/character_C_String_Path_Comparison_Strcmp - Fatal编程技术网

如何在C程序中检查字符串的结尾是否有/character

如何在C程序中检查字符串的结尾是否有/character,c,string,path,comparison,strcmp,C,String,Path,Comparison,Strcmp,我正在写一个简单的C程序 char *path; 我想检查路径是否有尾随“/”在最后,我尝试了strcmp函数,但它给了我分段错误 if (strcmp(path[strlen(path)-1], "/") == 0) 如何检查字符串末尾是否有“/” 谢谢 由于c中的字符串是字符数组,因此只需检查\0之前的最后一个字符即可 不要使用strcmp,而是使用类似的东西 const int len = strlen(path); if ( len > 0 && path[le

我正在写一个简单的C程序

char *path;
我想检查路径是否有尾随
“/”
在最后,我尝试了
strcmp
函数,但它给了我分段错误

if (strcmp(path[strlen(path)-1], "/") == 0)
如何检查字符串末尾是否有
“/”


谢谢

由于c中的字符串是字符数组,因此只需检查\0之前的最后一个字符即可

不要使用strcmp,而是使用类似的东西

const int len = strlen(path);
if ( len > 0 && path[len-1] == '/' )
{ 

}

由于c中的字符串是字符数组,因此只需检查\0之前的最后一个字符

不要使用strcmp,而是使用类似的东西

const int len = strlen(path);
if ( len > 0 && path[len-1] == '/' )
{ 

}
通过使用
path[strlen(path-1)]
,您正在将单个字符传递给
strcmp
,这是不允许的,因为
strcmp
需要以空结尾的字符序列

相反,直接进行比较:

if (path[strlen(path)-1] == '/') { ... }
通过使用
path[strlen(path-1)]
,您正在将单个字符传递给
strcmp
,这是不允许的,因为
strcmp
需要以空结尾的字符序列

相反,直接进行比较:

if (path[strlen(path)-1] == '/') { ... }

你可以去掉
int len=strlen(路径)
直接在if条件中使用strlen这是正确的,但通常情况下,可能需要在if语句中再次使用该值,例如删除“/”,我发现使用变量更清楚。优化器无论如何都会删除任何不必要的代码。这会在空字符串上呕吐。@rubenvb好吧,我更新了这个问题以满足您对细节的关注。太好了+1从我这里
:)
你可以去掉
int len=strlen(路径)
直接在if条件中使用strlen这是正确的,但通常情况下,可能需要在if语句中再次使用该值,例如删除“/”,我发现使用变量更清楚。优化器无论如何都会删除任何不必要的代码。这会在空字符串上呕吐。@rubenvb好吧,我更新了这个问题以满足您对细节的关注。太好了+1来自我
:)