Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   files concept (http://www.go4expert.com/forums/files-concept-t20380/)

transfernly 15Dec2009 17:36

files concept
 
hi....i am writing a code which reads the contents of file....it has first name, lastname and phone number.....now i want ot read all the first names into one array second into another and phone numbers into third array....i tried but i could read only line by line.....please help out...my code is here


my output should be like this
Code:

array1:firstnames
array3:lastnames
array3:phonenumbers

Code:

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


int main()
 {
  char c[50];  /* declare a char array */
  FILE *file;  /* declare a FILE pointer  */
 
 

  file = fopen("in.txt", "r");
 

  if(file==NULL)
 {
    printf("Error: can't open file.\n");
 
    return 1;
  }
  else {
    printf("File opened successfully. Contents:\n\n");
   
    while(fgets(c, 50, file)!=NULL)
    {
     
    printf("String: %s", c); 
   
   
    }

    printf("\n\nNow closing file...\n");
    fclose(file);
    return 0;
  }


Gene Poole 15Dec2009 19:58

Re: files concept
 
Are all the fields (firstname, lastname, phonenumber) on a single line in the file? Are they separated by something (comma, space)? You may want to try fscanf().

I've modified your code slightly (with some of the original lines commented out):

Code:

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


int main()
{
  /* char c[50]; not needed */ /* declare a char array */
  char lname[50],fname[50],pnumber[50];  /* adjust these to the max possible */
  FILE *file; /* declare a FILE pointer */



  file = fopen("in.txt", "r");


  if(file==NULL)
  {
    printf("Error: can't open file.\n");

    return 1;
  }
  else {
    printf("File opened successfully. Contents:\n\n");

    /* while(fgets(c, 50, file)!=NULL) */
    while(fscanf(file,"%s %s %s\n",lname,fname,pnumber)!=EOF)
    {

      /* printf("String: %s", c); */
      printf("String: %s %s %s\n",lname,fname,pnumber );


    }

    printf("\n\nNow closing file...\n");
    fclose(file);
    return 0;
  }
}


transfernly 16Dec2009 11:25

Re: files concept
 
thanks for u r help.....

but my solution should be like

it should print me

when i print fname array:

john
milan
anand

lname array:
peter
soman
raj

numbers array:
123456
678978
987654


here the file in.txt contains
john peter 123456
milan soman 678978
anand raj 987654



thanks in advance

Gene Poole 16Dec2009 20:03

Re: files concept
 
Then instead of the printf() in the while loop, fill in an array:

Code:

  /* adjust for max expected conditions: */
  fnamearr[10][50];
  lnamearr[10][50];
  phnumarr[10][50];

  int i,index;

/* ... */

    index=0;
    while(fscanf(file,"%s %s %s\n",lnamearr[index],fnamearr[index],pnumarr[index])!=EOF)
    {
      index++;
    }
   
    for(i=0;i<index;i++)
    {
      printf("Last name: %s\n",lnamearr[i]);
    }

    for(i=0;i<index;i++)
    {
      printf("First name: %s\n",fnamearr[i]);
    }

    for(i=0;i<index;i++)
    {
      printf("Phone: %s\n",phnumarr[i]);
    }


transfernly 17Dec2009 15:12

Re: files concept
 
thank you very much


All times are GMT +5.5. The time now is 11:25.