gpt4 book ai didi

c - fscanf() 仅拾取文件的第一行

转载 作者:行者123 更新时间:2023-12-02 08:54:10 25 4
gpt4 key购买 nike

我有一个制表符分隔文件,我正在尝试将其转换为制表符分隔文件。我正在使用 C。我在尝试读取文件的第二行时遇到了困难。现在我只有数万行重复第一行。

#include <stdio.h>
#include <string.h>
#define SELLERCODE A2LQ9QFN82X636

int main ()
{
typedef char* string;
FILE* stream;
FILE* output;
string asin[200];
string sku[15];
string fnsku[15];
int quality = 0;

stream = fopen("c:\\out\\a.txt", "r");
output = fopen("c:\\out\\output.txt", "w");

if (stream == NULL)
{
perror("open");
return 0;
}

for(;;)
{
fscanf(stream, "%[^\t]\t%[^\t]", sku, fnsku);
printf("%s\t%s\n", sku, fnsku);
fprintf(output, "%s\t%s\t%\t%s\t%s\t%i\n", sku, fnsku, asin, quality);
}

}

最佳答案

首选 fgets() 读取输入并解析程序中的行,例如使用 sscanf()strtok().

fscanf 是出了名的难用。
您的 fscanf 在第一行之后不执行任何转换。
它读取直到 TAB 的字符,然后忽略 TAB,并读取更多字符直到下一个 TAB。第二次循环时,sku 没有数据:第一个字符是 TAB

不过,请检查返回值。它有很大帮助。

chk = fscanf(stream, "%[^\t]\t%[^\t]", sku, fnsku);
/* 2 conversions: sku and fnsku */
if (chk != 2) {
/* something went wrong */
}

关于c - fscanf() 仅拾取文件的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6203159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com