0

我编写了一些 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 );
}
4

2 回答 2

2

你没办法让它编译。

这个:

while( fgets(line) != NULL )

是完全错误的,fgets()需要更多的论据,像这样:

while( fgets(line, sizeof line, stdin) != NULL )

您可以从免费提供的手册页中了解这些内容,只需在您喜欢的搜索引擎中输入“man fgets”即可。

此外,您的程序将需要具有#include <stdio.h>此功能。

于 2013-05-20T10:14:51.130 回答
1

fgets用几个参数打电话

char * fgets ( char * str, int num, FILE * stream );

你想得到 POST 吗?

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);
}
于 2013-05-20T10:17:20.097 回答