检查c中字符串的第一个字母
Checking the first letter of a string in c
我正在用 C 编写一个非常简单的函数来检查字符串是绝对路径还是相对路径。无论我尝试什么,它总是返回 false。
这是我尝试过的:
int isAbsolute(char *str){
if(strcmp(str,"/")){
return 1;
}
return 0;
}
我这样称呼它:
printf("%d\n", isAbsolute("/"));
每次都返回 false。显然我遗漏了一些明显的东西,但我一直无法弄清楚...
无法访问编译器,但我认为这会起作用,因为 C 风格的字符串只是带有终止符的数组:
int isAbsolute(const char *str){
return (str[0] == '/');
}
正如所指出的,strcmp
仅当被比较的字符串长度相同时才匹配。
要比较字符串前面的单个字符,您可以这样做:
int isAbsolute(const char *str) {
return (str[0] == '/');
}
如果您要查找的前缀超过一个字符,那么 this 可能会有所帮助。与被接受的答案相比,我更喜欢 Fred Foo 的回答(大多数选民也是如此)。
strcmp
比较整个字符串,因此如果您传递的字符串是“/”,您的函数只会 return true
。
您可以改为查看 strncmp:
if(strncmp(str,"/", 1)) ...
或者只比较一个字符:
(if (str[0] == '/')) ...
与strncmp
类似,您可以使用memcmp
,它具有要比较的字节数作为参数:
int isAbsolute(const char *str){
if (0 == memcmp(str, "/", 1){
return 1;
} else {
return 0;
}
}
不要忘记 return 值 $0$ 表示相等。在你的代码中你 return 0 在这种情况下可能不是你想要的。
Strcmp return 成功案例中的值为零,这就是为什么它不会为真
我正在用 C 编写一个非常简单的函数来检查字符串是绝对路径还是相对路径。无论我尝试什么,它总是返回 false。
这是我尝试过的:
int isAbsolute(char *str){
if(strcmp(str,"/")){
return 1;
}
return 0;
}
我这样称呼它:
printf("%d\n", isAbsolute("/"));
每次都返回 false。显然我遗漏了一些明显的东西,但我一直无法弄清楚...
无法访问编译器,但我认为这会起作用,因为 C 风格的字符串只是带有终止符的数组:
int isAbsolute(const char *str){
return (str[0] == '/');
}
正如所指出的,strcmp
仅当被比较的字符串长度相同时才匹配。
要比较字符串前面的单个字符,您可以这样做:
int isAbsolute(const char *str) {
return (str[0] == '/');
}
如果您要查找的前缀超过一个字符,那么 this 可能会有所帮助。与被接受的答案相比,我更喜欢 Fred Foo 的回答(大多数选民也是如此)。
strcmp
比较整个字符串,因此如果您传递的字符串是“/”,您的函数只会 return true
。
您可以改为查看 strncmp:
if(strncmp(str,"/", 1)) ...
或者只比较一个字符:
(if (str[0] == '/')) ...
与strncmp
类似,您可以使用memcmp
,它具有要比较的字节数作为参数:
int isAbsolute(const char *str){
if (0 == memcmp(str, "/", 1){
return 1;
} else {
return 0;
}
}
不要忘记 return 值 $0$ 表示相等。在你的代码中你 return 0 在这种情况下可能不是你想要的。
Strcmp return 成功案例中的值为零,这就是为什么它不会为真