read each line of file
Please support our C advertiser: Programming Forums
Thread Solved
![]() |
I have a question:
I have a file named "data.inp". This file have numbers:
6 3 5 4 5
2 5 3 1
5 8 7 9
2 5 6 3 5 8 4 6
If I want more line of numbers, I will add numbers.
But I don't know how to read file "data.inp" line by line. I think I should use fgets, but seem that fgets is used for char. Or I used fgetc to read all numbers, then I count '\n' (note: "enter"), add 1, I have number of line. Then maybe I read file by that way?
thanks in advance!
I have a file named "data.inp". This file have numbers:
6 3 5 4 5
2 5 3 1
5 8 7 9
2 5 6 3 5 8 4 6
If I want more line of numbers, I will add numbers.
But I don't know how to read file "data.inp" line by line. I think I should use fgets, but seem that fgets is used for char. Or I used fgetc to read all numbers, then I count '\n' (note: "enter"), add 1, I have number of line. Then maybe I read file by that way?
thanks in advance!
fgets() doesn't know the difference between characters, such as 'a', 'b', 'c' ... and numbers such as '1', '2', '3' ... '9'. In the file they are all just text. If you want to treat all those numbers as text, read the file line by line, then just use fgets() the normal way
If you just want to add more lines to that file, then it isn't necessary to read it at all. Open the file for append and start writing -- new lines will be appended to the end of the existing lines.
char line[80]
FILE* fp = fopen("data.inp","r");
while(fgets(line,1,sizeof(line),fp)
{
// do something
}
fclose(fp);If you just want to add more lines to that file, then it isn't necessary to read it at all. Open the file for append and start writing -- new lines will be appended to the end of the existing lines.
Last edited by Ancient Dragon : Feb 5th, 2007 at 8:38 am.
Sometimes, when I look at my children, I say to myself, "Lillian, you should have remained a virgin."
-- Lillian Carter (mother of Jimmy Carter)
-- Lillian Carter (mother of Jimmy Carter)
I don't know whether or not this may help:
http://www.daniweb.com/code/printsnippet444.html
http://www.daniweb.com/code/printsnippet444.html
"One of the methods used by statists to destroy capitalism consists in establishing controls that tie a given industry hand and foot, making it unable to solve its problems, then declaring that freedom has failed and stronger controls are necessary." --Ayn Rand
Post your code so that we can atleast point out the mistakes you are making...
I don't accept change; I don't deserve to live.
Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.
-- Eric Naggum RIP :-(
Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.
-- Eric Naggum RIP :-(
Here is my code :
Hope you understand me.
#include<conio.h>
#include<stdio.h>
main()
{
clrscr();
int v[10],v1[10],i=0,j,t,k,number,count=0;
FILE *f ;
f=fopen("numbers.inp","r");
/* open file numbers.inp to read, for e.g, you inputs two rows ( can be more than two ) of number
5 4 4 3 3 3 2
2 2 1
*/
do
{
i++;
fscanf(f,"%d",&v[i]);
count++;
}
/* after these above commands, I change all chars in numbers.inp to integers belong to array v[i] so I think 5 4 4 3 3 3 2 and 2 2 1 now are integer not char */
while((number=getc(f))!=EOF);
/* I think problem is here, when I use fscanf I lost two rows and now
it read to end of file and it considers my two rows as one row v[i]={5 4 4 3 3 3 2 2 2 1} and it apply the beneath algorithm for it.
What I want is it does the algorithm to the first row 5 4 4 3 3 3 2 and export result to result.out, then does with the second row 2 2 1 and export result to result.out */
k=count;
while(v[1]>0)
{
for(i=2;i<=(v[1]+1);i++)
v1[i-1]=v[i]-1;
for(i=(v[1]+2);i<=count;i++)
v1[i-1]=v[i];
count--;
for(i=1;i<=count;i++)
v[i]=v1[i];
for(i=1;i<=(count-1);i++)
for(j=(i+1);j<=count;j++)
if(v[i]<v[j])
{
t=v[i];
v[i]=v[j];
v[j]=t;
}
for(i=1;i<=count;i++)
{
printf("%2d",v[i]);
if(i==count) printf("\n");
}
k--;
}
f=fopen("result.out","w");
i=k;
if(v[i]>(k-1)||(v[i]<0)) fprintf(f,"NO");
if(v[i]==0) fprintf(f,"YES");
getch();
fclose(f);
}![]() |
Similar Threads
Other Threads in the C Forum
- problems with reading random access line from a file (C++)
- read to end of line problem (C)
- Reading specific line in a file. / Searching (C++)
- Read in a string from a text file (C)
- input from file into class (C++)
- How to read end of line? (C++)
Other Threads in the C Forum
- Previous Thread: how do u find prime numbers in an array
- Next Thread: turboC
•
•
•
•
Views: 15853 | Replies: 17 | Currently Viewing: 1 (0 members and 1 guests)






Linear Mode