问题
I have two .c files: one contains the main and the other contains all of my functions.
In my main I have a part where I want to read a char at a time the loop looks like this:
while(ch = ReadFile(fp)) != EOF)
{
// Code
}
where ch is an integer (int ch;) and fp is a file pointer (FILE* fp;).
And (different .c file ---):
int ReadFile(FILE* fp)
{
// Some code
return n; // The next char
}
Does anyone know how I can read one char at a time from the main this way, using this method?
回答1:
Update:-
The famous getc from <stdio.h> is a solution:-
while((ch = getc(fp)) != EOF)
{
//...
}
...
int ReadFile(FILE* fp)
{
//Do what you wish... :)
return getc(fp);
}
Declared as int getc( FILE * _File);
回答2:
try this:
int ReadFile(FILE* fp, int *buffer)
{
if(fp != NULL)
{
*buffer = fgetc(fp);
return *buffer;
}
else return NULL;
}
回答3:
Simply:
while(ch != EOF)
{
ch = fgetc(fp);
//process ch
}
Keep in mind that fgetc is declared as an int.
Or if you wanted to build a string char by char you could read the file char by char to dynamically allocated memory like so (assuming fp is open for reading):
char *data = NULL, *tmp;
int ch, bff = 0;
while(ch != EOF)
{
if(!(tmp = realloc(data, bff + 2)))
{
free(data);
return 1;
}
data = tmp;
ch = fgetc(fp); //or your readfile function assuming it works the same as fgetc
data[bff++] = ch;
}
data[bff] = '\0';
just free(data) when you are done with it
来源:https://stackoverflow.com/questions/12269125/reading-a-file-one-char-at-a-time