Getting a segmentation fault.
Hello,
Still working on the same project if you have seen me post before.
Almost finished though. I'm working on the project where I have to take files that have multiple lines that look like this....
Tuesday,17
Wednesday,57
Friday,27
Tuesday,17
Anyways I have to see how many times each day is in each file. And I have to add up the number by that particular day.
Tested code and it ran smoothly the first file, but then gives me a segmentation fault the next time it tries to run one. I'm assuming that's me messing up on the pointers or something of the sort.
Any help would be great.
Thanks
Here's my code...
Btw it's the same loop twice. One is for the first 9 files, then the other one is for all of the double digit files.
Also I'm working on changing the counters to array's as we speak.
Code:
#include <stdio.h>#include <stdlib.h>
int main(void)
{
int day1total = 0;
int day2total = 0;
int day3total = 0;
int day4total = 0;
int day5total = 0;
int day6total = 0;
int day7total = 0;
int day1number = 0;
int day2number = 0;
int day3number = 0;
int day4number = 0;
int day5number = 0;
int day6number = 0;
int day7number = 0;
int i = 1;
int n;
int file_count = 1;
char buffer[50];
char day[50];
FILE *fp;
char filename[50];
while ( i < 10 )
{
sprintf(filename,"hw04-data-0%d.csv", i);
fp=fopen(filename, "r");
while(fgets(buffer, sizeof(buffer), fp))
{
sscanf(buffer,"%[^,] ,%d", day, &n);
/*printf("day is %s, amt is %d\n", day, n);*/
if(strcmp(day, "Sunday")==0)
{
day1total++;
day1number+=n;
}
if(strcmp(day, "Monday")==0)
{
day2total++;
day2number+=n;
}
if(strcmp(day, "Tuesday")==0)
{
day3total++;
day3number+=n;
}
if(strcmp(day, "Wednesday")==0)
{
day4total++;
day4number+=n;
}
if(strcmp(day, "Thursday")==0)
{
day5total++;
day5number+=n;
}
if(strcmp(day, "Friday")==0)
{
day6total++;
day6number+=n;
}
if(strcmp(day, "Saturday")==0)
{
day7total++;
day7number+=n;
}
}
printf("File %2d: Sun, %d, %d; Mon, %d, %d; Tue, %d, %d; Wed,"
"%d, %d; Thu, %d, %d; Fri, %d, %d; Sat, %d, %d\n", file_count, day1total, day1number, day2total, day2number, day3total, day3number, day4total,
day4number, day5total, day5number, day6total, day6number, day7total, day7number);
file_count++;
day1total = 0;
day2total = 0;
day3total = 0;
day4total = 0;
day5total = 0;
day6total = 0;
day7total = 0;
day1number = 0;
day2number = 0;
day3number = 0;
day4number = 0;
day5number = 0;
day6number = 0;
day7number = 0;
i++;
}
i=10;
while ( i < 100 )
{
sprintf(filename,"hw04-data-%d.csv", i);
if((fp=fopen(filename, "r")) == NULL)
{
printf("Error: file failed to open!\n");
getchar();
return 1;
}
while(fgets(buffer, sizeof(buffer), fp))
{
sscanf(buffer,"%[^,], %d",day, &n);
if(strcmp(day, "Sunday")==0)
{
day1total++;
day1number+=n;
}
if(strcmp(day, "Monday")==0)
{
day2total++;
day2number+=n;
}
if(strcmp(day, "Tuesday")==0)
{
day3total++;
day3number+=n;
}
if(strcmp(day, "Wednesday")==0)
{
day4total++;
day4number+=n;
}
if(strcmp(day, "Thursday")==0)
{
day5total++;
day5number+=n;
}
if(strcmp(day, "Friday")==0)
{
day6total++;
day6number+=n;
}
if(strcmp(day, "Saturday")==0)
{
day7total++;
day7number+=n;
}
}
printf("File %2d: Sun, %d, %d; Mon, %d, %d; Tue, %d, %d; Wed,"
"%d, %d; Thu, %d, %d; Fri, %d, %d; Sat, %d, %d\n", file_count, day1total, day1number, day2total, day2number, day3total, day3number, day4total,
day4number, day5total, day5number, day6total, day6number, day7total, day7number);
file_count++;
day1total = 0;
day2total = 0;
day3total = 0;
day4total = 0;
day5total = 0;
day6total = 0;
day7total = 0;
day1number = 0;
day2number = 0;
day3number = 0;
day4number = 0;
day5number = 0;
day6number = 0;
day7number = 0;
i++;
}
getchar();
return 0;
}