问题很简单,但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/

10-12 17:36
查看更多