我希望能够创建一个逐行读取的循环,然后将每行开头的数字捕获到一个int数组中,并将字符捕获到一个二维字符数组中。我以为我可以有一个循环,
while (fscanf(file, "%d %c %c %c", &num, &f, &e, &h)==4){}
但是,如果C可以读取字符串。我怎样才能阅读每一行?
答案 0 :(得分:1)
要阅读一行,您可以使用: -
while ( fgets ( line, sizeof line, file ) != NULL )
或者你可以尝试
while ((read = getline(&line, &len, fp)) != -1)
答案 1 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
int main()
{
char matrix[500][500], space;
int numbers[500], i = 0, j;
FILE *fp = fopen("input.txt", "r");
while(!feof(fp))
{
fscanf(fp, "%d", &numbers[i]); // getting the number at the beggining
fscanf(fp, "%c", &space); // getting the empty space after the number
fgets(matrix[i++], 500, fp); //getting the string after a number and incrementing the counter
}
for(j = 0; j < i; j++)
printf("%d %s\n", numbers[j], matrix[j]);
}
变量'i'正在计算你有多少行。如果您有超过500行,您可以更改该值,或使用动态向量。
答案 2 :(得分:0)
怎么样:
char buf[512];
int length = 0;
while(fgets(&buf[0], sizeof(buf), stdin)) {
length = strlen(&buf[0]);
if(buf[length-1] == '\n')
break
/* ...
...
realloc or copy the data inside buffer elsewhere.
...*/
}
/* ... */