我是C的新手,我在使用C中最基本的想法时遇到了问题。我们正在开始构建,基本上我们正在处理的任务是读取分隔文件并将内容保存到结构中。该文件的第一行有条目数,我现在要做的就是让程序读取并保存该数字并将其打印出来。请不要假设我对C一无所知我真的对此很新。
此代码给我一个分段错误
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct info{
char name[100];
char number[12];
char address[100];
char city[20];
char state[2];
int zip;
};
int strucCount;
char fileText[1];
int main(char *file)
{
FILE *fileStream = fopen(file, "r");
fgets(fileText, 1, fileStream);
printf("\n%s\n",fileText);
fclose(fileStream);
}
以下是示例文件
4
mike|203-376-5555|7 Melba Ave|Milford|CT|06461
jake|203-555-5555|8 Melba Ave|Hartford|CT|65484
snake|203-555-5555|9 Melba Ave|Stamford|CT|06465
liquid|203-777-5555|2 Melba Ave|Barftown|CT|32154
感谢大家的评论,他们帮助了很多,对吉姆抱歉。我的睡眠很少,并不意味着冒犯任何人,我相信我们一直都在那里哈哈。
答案 0 :(得分:3)
建议:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXLINE 80
#define MAXRECORDS 10
struct info{
char name[100];
char number[12];
char address[100];
char city[20];
char state[2];
int zip;
};
int
main(int argc, char *argv[])
{
FILE *fp = NULL;
int nrecs = 0;
char line[MAXLINE];
struct info input_records[MAXRECORDS];
/* Check for cmd arguments */
if (argc != 2) {
printf ("ERROR: you must specify file name!\n");
return 1;
/* Open file */
fp = fopen(argv[1], "r");
if (!fp) {
perror ("File open error!\n");
return 1;
}
/* Read file and parse text into your data records */
while (!feof (fp)) {
if (fgets(line, sizeof (line), fp) {
printf("next line= %s\n", line);
parse(line, input_records[nrecs]);
nrecs++;
}
}
/* Done */
fclose (fp);
return 0;
}
fclose(fileStream);
}
关键点:
注意使用“argc / argv []”从命令行读取输入文件名
line,nrecs等都是局部变量(不是全局变量)
检查“未提供文件名”或“无法打开文件”等错误情况
循环读取数据,直到输入文件结束
将您从文本文件中读取的数据解析为二进制记录数组(TBD)