问题很简单,但C语言并不能为我们提供有用的库:
假设我们有这个字符串:
char *request = "GET /websiteos/example_of_a_simple_html_page.htm HTTP/1.1\r\n";
如何获取以下字符串:
/websiteos/example_a_simple_html_page.htm网站
我要找的字符串在两个空格之间。问题是每次我都会有一个新的请求行,所以我不知道字符串的大小。
我以为我会这样做,但没用:
char * getTheResource(char *request){
char c;
int i=4;
char *resource=(char *)malloc(20);
while (request[i] != ' ')
{ strcat(resource, request[i]);
i++;
}
return resource;
}
int main( int n , char *arg[] )
{
char *request = "GET /websiteos/example_of_a_simple_html_page.htm HTTP/1.1\r\nHost: help.websiteos.com\r\n\r\n";
char *res =getTheResource(request);
printf("the ressource is :%s\n",res);
}
我得到一个编译错误:
在函数“getTheResource”中:
example.c:19:3:警告:传递'strcat'的参数2使指针从整数开始,不带强制转换[默认情况下已启用]
strcat(资源,请求[i]);
那么我该如何解决这个问题呢?
最佳答案
strcat(resource, request[i]);
这是错误的,因为
request[i]
属于char
类型,strcat
需要char *
。您可以使用
resource
运算符将该索引处的字符赋给=
:int j = 0;
while(request[i] != ' ' && j < 19){ // Or the size you allocate to your pointer
resource[j] = request[i];
i++;
j++;
}
resource[j] = '\0';
编辑-
您还可以使用
strtok
。使用空格作为分隔符并在标记化后获取所需的字符串(但在request
中声明char request[] = "your string";
为main
)。关于c - 如何从字符串(C中的char指针)获取字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36136812/