相关疑难解决方法(0)

如何检查字符串是否以C中的某个字符串开头?

例如,要验证有效的Url,我想执行以下操作

char usUrl[MAX] = "http://www.stackoverflow"

if(usUrl[0] == 'h'
   && usUrl[1] == 't'
   && usUrl[2] == 't'
   && usUrl[3] == 'p'
   && usUrl[4] == ':'
   && usUrl[5] == '/'
   && usUrl[6] == '/') { // what should be in this something?
    printf("The Url starts with http:// \n");
}
Run Code Online (Sandbox Code Playgroud)

或者,我考虑过使用strcmp(str, str2) == 0,但这一定非常复杂.

是否有标准的C函数可以做这样的事情?

c string

9
推荐指数
3
解决办法
3万
查看次数

用 C 宏替换 strncmp 函数中的参数

使用以下 c 宏替换 strncmp(可能还有任何其他函数)中的参数似乎存在问题:

#define STRING_WITH_SIZE_MINUS_ONE(x)   x, sizeof(x)-1

...

if (0 == strncmp(str1, STRING_WITH_SIZE_MINUS_ONE("str2")) {
// do something
}

Run Code Online (Sandbox Code Playgroud)

当使用arm-linux-gnueabihf-gcc 4.9.2构建时,这会抛出错误error : macro "strncmp" require 3 argument, but only 2给定的。使用arm-linux-gnueabihf-gcc 8.3.0 构建似乎工作得很好。

显然,整个 strncmp 函数可以放在宏内部,并且它可以很好地工作,但是理解为什么它不能编译是非常有益的。

c

3
推荐指数
2
解决办法
105
查看次数

在c中检查字符串的第一个字母

我在C中编写一个非常简单的函数来检查字符串是绝对路径还是相对路径.无论我尝试什么,它总是返回false.

这是我尝试过的:

int isAbsolute(char *str){
    if(strcmp(str,"/")){
        return 1;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我称之为:

printf("%d\n", isAbsolute("/"));
Run Code Online (Sandbox Code Playgroud)

每次都返回false.很明显,我错过了一些明显的东西,但我无法弄明白......

c strcmp strncmp

2
推荐指数
1
解决办法
2047
查看次数

标签 统计

c ×3

strcmp ×1

string ×1

strncmp ×1