【发布时间】:2015-04-26 22:39:05
【问题描述】:
在这个程序中,我试图从文件中读取一个双精度和一个字符数组,并打印出双精度值大于输入参数的行。它编译得很好,但是当我运行它时出现错误:Segmentation fault(core dumped)
这是程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char **argv[]) {
if(argc != 2)
printf("enter 2 arguments\n");
else {
int r;
double tDate = atof(*argv[1]);
double date = 0;
char event[] = "";
FILE *fp = fopen("tickler.dat","r");
if( fp == NULL ) {
perror("Error while opening the file.\n");
exit(EXIT_FAILURE);
}
while(r = fscanf(fp, "%lf %s\n", &date, event) != EOF) {
if(date > tDate)
printf("%d - %s", date, event);
}
fclose(fp);
}
return 0;
}
这是文件,“Tickler.dat”
150410 DR_APPOINTMENT
150420 MATH_DUE
150426 MEETING
150511 PRINT_HW
任何帮助将不胜感激。
【问题讨论】:
-
数组
event[]有多大?多少个字符? -
另外,也是学习使用调试器的好时机。在这种(以及许多其他)情况下非常有帮助。
-
除了上述 cmets :根据this reply,您应该在 fscanf 中使用 %lf,您已经在使用,在 printf 中使用 %f。参考@Angel Angel 的评论和我的回复。
标签: c