Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

Problem reading ints and Strings from single line of CSV text file, C

$
0
0
Well I am going to get right to it and say I am 100% clueless as I have scoured the web and texts looking for a clear cut approach and solution to my issue. My title really says it all, I have a file that has 10 or so lines of text that all pretty much look like this...

1301,105515018,"Boatswain","Michael R.",CSE, 230,="R01"

Now I am trying to get each one of those values, delimited by the commas, into their proper variables that belong to a common struct. I have gotten as far as the first 2 integers as well as getting the first string (a last name) but it includes the quotes, which I do not want. I can't seem to get anything other then a bunch of random numbers and letters as well as some goofy symbols when attempting to get the rest. I have tried putting the entire line into an fscanf and it stops at the first string. I know this a poor approach and I have attempt to make a function that word parse the line and get the Strings out, but I couldn't get to the Strings and didn't know how to cut them up. I have also tried strtok but that failed miserably because I had no idea how to get things on the right side of being in between quotes. So here is my code so far...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_NAME 15
#define MAX_SUBSEC 3
#define N 128

struct student{

	int term;
	int id;
	char lastname[MAX_NAME];
	char firstname[MAX_NAME];
	char subjectname[MAX_SUBSEC];
	int catalog;
	char section[MAX_SUBSEC];

}students[10];

int main(){

	int term;
	int id;
	char lastname[MAX_NAME];
	char firstname[MAX_NAME];
	char sub[MAX_SUBSEC];
	int cat;
	char sec[MAX_SUBSEC];

    char fname[N];
    FILE *inputf;

    printf("Enter the name of the text file: ");
    scanf("%123s",fname);

    strcat(fname,".txt");

    inputf = fopen(fname,"r");

    if (inputf == NULL){

         printf("I couldn't open the file for reading.\n");
         exit(0);

	}

    fscanf(inputf, "%d,%d,%[^,]s", &students[0].term, &students[0].id, students[0].lastname);

    printf("%d\n", students[0].term);

    printf("%d\n", students[0].id);

    printf("%s\n", students[0].lastname);

	/*for (j = 1 ; j <= 10-1 ; j++){

        for(k = 0 ; k <= 10-2 ; k++){

            if(students[k] > students[k+1]){

                temp = students[k];
                students[k] = students[k+1];
                students[k+1] = temp;

                }
            }
        }*/

    fclose(inputf);

    return 0;

}


Any amount of help would go a long way because I am totally stumped, so please and thanks, very much appreciate any help!

Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>