解析输入c时出错

时间:2015-03-04 09:25:14

标签: c parsing

您好我正在编写一个简单的c程序来测试解析c中的缓冲区但是当我运行该程序时,我得到以下错误:

./test.c: line 4: syntax error near unexpected token `('
./test.c: line 4: `int main()'

有谁知道为什么会出现这些错误? 感谢

#include <stdio.h>
#include <stdlib.h>

int main()
{

    char* command;

    char* buf = malloc(100 *sizeof(char));

    buf = "GET /index.html HTTP/1.1\n Host: www.gla.ac.uk\n";

    command  = strtok(buf, " ");
    printf("%s", command );

    free(buf);
}

3 个答案:

答案 0 :(得分:6)

我认为你试图在没有编译的情况下运行源代码。这不是正确的方法。
首先编译源代码

gcc test.c -o test

然后执行

./test

答案 1 :(得分:1)

之后

buf = "GET /index.html HTTP/1.1\n Host: www.gla.ac.uk\n";

不要

free(buf);

我想你应该做

strncpy(buf, "GET /index.html HTTP/1.1\n Host: www.gla.ac.uk\n", 100);

而不是

buf = "GET /index.html HTTP/1.1\n Host: www.gla.ac.uk\n";

正确的mallocing看起来像:

char* buf = (char *)malloc(100 *sizeof(char));

答案 2 :(得分:0)

您实际上需要字符串的副本,因为您要分配的字符串文字是不变的。您可以使用strdup,或者可能更安全,使用strndup制作字符串的副本。这确实隐含地使用了malloc,所以你之后应该free