Re: Conversion functions.
- From: Allin Cottrell <cottrell wfu edu>
- To: Magnus Myrefors <myrefors magnus telia com>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Conversion functions.
- Date: Tue, 11 Sep 2007 23:32:15 -0400 (EDT)
On Fri, 7 Sep 2007, Magnus Myrefors wrote:
By the way I have found out that I used a way of reading lines
from the input-file which can cause some problem. I read in a
book that fgets(string, sizeof(string), input) should read one
line up to sizeof(string) -1 or to the first newline- character.
But when I tested I found out that that wasn't the case. That
can explain the false data.
Well, "explain" in some sense, I suppose. If fgets is not
behaving on your system as the ISO C standard says it should, all
bets are off.
However, are you sure you have interpreted this correctly? The
"sizeof" business in particular. Let's suppose you have a valid
FILE *, fp, from which to read.
(1) correct:
char line[1024];
while (fgets(line, sizeof line, fp)) {
/* do stuff */
}
(2) wrong:
char *line = malloc(1024);
while (fgets(line, sizeof line, fp)) {
/* do stuff */
}
In case (1) sizeof line is 1024, while in case (2) sizeof line is
the size of a char * pointer on your system, which is likely 4
bytes (maybe 8). If your read buffer is allocated dynamically you
need to do something like
(3) correct:
int buflen = 1024;
char *line = malloc(buflen);
while (fgets(line, buflen, fp)) {
/* do stuff */
}
Allin Cottrell
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]