您好我正在编写一个简单的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);
}
答案 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
。