【发布时间】:2020-04-12 15:13:54
【问题描述】:
我需要逐行阅读文件并使用从每一行收集的信息进行一些操作。到目前为止,我的代码只能逐行读取文件并在控制台打印。
#include <stdio.h>
#include <stdlib.h>
#include "structure.h"
int main()
{
printf("Hello world!\n");
int x = 43; // number of lines in my text file
FILE *fptr;
struct values *valuesPtr = malloc(sizeof(struct values) * x);
if (!valuesPtr)
return -1;
if((fptr = fopen("energy.txt", "r")) == NULL) {
printf ("Error opening file ");
return 0;
}
while (fptr != NULL) {
for(int i = 0; i < x; i++ ) {
fscanf(fptr, "%s %s %d", valuesPtr[i].start_vertex, valuesPtr[i].destination_vertex, &valuesPtr[i].num);
printf("\nStart vertex: %s \nDestination vertex: %s \nWeight: %d\n\n", valuesPtr[i].start_vertex, valuesPtr[i].destination_vertex, valuesPtr[i].num);
}
free(valuesPtr);
}
fclose(fptr);
return 0;
}
我的 structure.h 文件有以下代码:
struct values{
int num;
char start_vertex[250];
char destination_vertex[250];
} x;
energy.txt文件内容如下:
York Hull 60
Leeds Doncaster -47
Liverpool Nottingham 161
Manchester Sheffield 61
Reading Oxford -43
Oxford Birmingham 103
Birmingham Leicester 63
Liverpool Blackpool 79
Carlisle Newcastle 92
Nottingham Birmingham 77
Leeds York 39
Glasgow Edinburgh 74
Moffat Carlisle 65
Doncaster Hull 76
Northampton Birmingham 90
Leicester Lincoln 82
Sheffield Birmingham 122
Lincoln Doncaster 63
Sheffield Doncaster 29
Bristol Reading 130
Hull Nottingham 145
Blackpool Leeds 116
Birmingham Bristol 139
Manchester Leeds 64
Carlisle Blackpool 140
Leicester Northampton -61
Newcastle York 135
Glasgow Moffat -28
Leicester Sheffield 100
Carlisle Liverpool -30
Birmingham Manchester 129
Oxford Bristol 116
Leeds Hull 89
Edinburgh Carlisle 154
Nottingham Sheffield 61
Liverpool Manchester 56
Carlisle Glasgow 50
Sheffield Lincoln 74
York Doncaster 55
Newcastle Edinburgh 177
Leeds Sheffield 53
Northampton Oxford 68
Manchester Carlisle 20
有人告诉我使用getline() 函数和sscanf() 来存储文件中的数据。但我不确定我应该怎么做。
【问题讨论】:
-
你得到的建议听起来很合理。阅读 sscanf 函数here。
-
那个链接失效了
-
已经修复。刷新你的页面(这是关于 Stack Overflow 的那些真正令人讨厌的事情之一,从未被修复过)。
-
能否详细说明
标签: c linked-list getline