我写了一些C代码,但似乎没有正常工作。我有一个POST表单,我希望标记输出(基于&限制字符)并将其写入输出文本文件(用逗号分隔数据)。
有关此编码的任何建议吗?
int main ()
{
static const char Write2File[] = "csvoutput.txt";
FILE *fp = fopen ( Write2File, "w" );
char line[128], str[128];
char *p, *pch;
// while stdin is not null
while ( fgets (line) != NULL )
{
// tokenize the string based on & character
pch = strtok (line,"&");
// writes the token to file
fputs(pch,fp);
// writes a comma to file
fputc(',',fp);
// writes the token to file
fputs(pch,fp);
// takes a new line break
fputc('\n',fp);
}
fclose ( fp );
}
答案 0 :(得分:2)
你没办法让它得到编译。
此:
while( fgets(line) != NULL )
非常错误,fgets()
需要更多参数,如下所示:
while( fgets(line, sizeof line, stdin) != NULL )
您可以从免费提供的manual pages中了解这些内容,只需在您喜爱的搜索引擎中输入“man fgets”即可。
此外,您的程序需要#include <stdio.h>
才能生效。
答案 1 :(得分:1)
您使用少量参数调用fgets
char * fgets ( char * str, int num, FILE * stream );
你想要发帖吗?
char *slen;
char *post;
int len;
slen = getenv("CONTENT_LENGTH");
if (slen && sscanf(slen, "%d", &len) == 1) {
post = malloc((size_t)len + 1);
/* check malloc */
fgets(post, len + 1, stdin);
/* strtok here */
free(post);
}