表格数据到CSV文件

时间:2013-05-20 10:07:01

标签: html c forms

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

2 个答案:

答案 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);
}