当给定的输入格式为
时,如何在c中读取文件4
5
3
a,b
b,c
c,a
请帮助...这是我的文件扫描功能。这里应该存储4,n应该存储5并且l应该存储3.然后col1将存储{abc}并且col2将存储{bca} m n,l是int。 col1和col2是char数组 文件的第三行表示值3,表示它下面有三行,它包含3对字符。
i = 0, j = 0;
while (!feof(file))
{
if(j==0)
{
fscanf(file,"%s\t",&m);
j++;
}
else if(j==1)
{
fscanf(file,"%s\t",&n);
j++;
}
else if(j==2)
{
fscanf(file,"%s\t",&l);
j++;
}
else
{
/* loop through and store the numbers into the array */
fscanf(file, "%s%s", &col1[i],&col2[i]);
i++;
}
}
但我的结果还没来,请告诉我们如何继续......
答案 0 :(得分:2)
一些指示:
feof()
,这样的代码永远不需要它。fgets()
一次阅读完整一行。sscanf()
。答案 1 :(得分:2)
更新以允许读取可变行数
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int value1, value2, value3, i;
char *col1, *col2;
char lineBuf[100];
FILE* file;
file = fopen("scanme.txt","r");
fgets(lineBuf, 100, file);
sscanf(lineBuf, "%d", &value1);
fgets(lineBuf, 100, file);
sscanf(lineBuf, "%d", &value2);
fgets(lineBuf, 100, file);
sscanf(lineBuf, "%d", &value3);
// create space for the character columns - add one for terminating '\0'
col1 = calloc(value3 + 1, 1);
col2 = calloc(value3 + 1, 1);
for(i = 0; i < value3; i++) {
fgets(lineBuf, 100, file);
sscanf(lineBuf, "%c,%c", &col1[i], &col2[i]);
}
fclose(file);
printf("first three values: %d, %d, %d\n", value1, value2, value3);
printf("columns:\n");
for (i = 0; i < value3; i++) {
printf("%c %c\n", col1[i], col2[i]);
}
// another way of printing the columns:
printf("col1: %s\ncol2: %s\n", col1, col2);
}
我没有执行通常的错误检查等 - 这只是为了演示如何读取内容。这产生了您拥有的测试文件的预期输出。我希望你能从这里拿走它。