Deutsch   English   Français   Italiano  
<v4m3m0$3ul56$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!feed.opticnetworks.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Malcolm McLean <malcolm.arthur.mclean@gmail.com>
Newsgroups: comp.lang.c
Subject: Re: Whaddaya think?
Date: Sun, 16 Jun 2024 08:19:28 +0100
Organization: A noiseless patient Spider
Lines: 47
Message-ID: <v4m3m0$3ul56$1@dont-email.me>
References: <666ded36$0$958$882e4bbb@reader.netnews.com>
 <20240616015649.000051a0@yahoo.com> <v4lm16$3s87h$4@dont-email.me>
 <v4lmso$3sl7n$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 16 Jun 2024 09:19:29 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="8103e7298be6c569bc7cbc2d3a1ab070";
	logging-data="4150438"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19fPrWfQNt+3Hy0M3Id0ZtuKbhLlWVAyUY="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:JaDo4VXilcvO01jAUrtFdAKOuI4=
Content-Language: en-GB
In-Reply-To: <v4lmso$3sl7n$1@dont-email.me>
Bytes: 2622

On 16/06/2024 04:41, Janis Papanagnou wrote:
> On 16.06.2024 05:26, Lawrence D'Oliveiro wrote:
>> On Sun, 16 Jun 2024 01:56:49 +0300, Michael S wrote:
>>
>>> If you want to preserve you sanity, never use fscanf().
>>
>> Quoth the man page <https://manpages.debian.org/3/scanf.3.en.html>:
>>
>>      It is very difficult to use these functions correctly, and it is
>>      preferable to read entire lines with fgets(3) or getline(3) and
>>      parse them later with sscanf(3) or more specialized functions such
>>      as strtol(3).
> 
> This would be also my first impulse, but you'd have to know
> _in advance_ how long the data stream would be; the function
> requires an existing buffer. So you'd anyway need a stepwise
> input. On the plus side there's maybe a better performance
> to read large buffer junks and compose them on demand? But
> a problem is the potential cut of the string of a number; it
> requires additional clumsy handling. So it might anyway be
> better (i.e. much more convenient) to use fscanf() ?
> 
> Janis
> 
Try this psuedo - code)

tempfp = tmpfile();

while ((ch = fgetc(fp) != EOF)
{
    if (isidigit(ch))
    {
       ungetc(ch, fp);
       x = parsenumber(fp);
       fwrite(&x, sizeof(int), 1, tenpfp);
       N++;
    }
}

answer = malloc(N * sizeof(int))
fessek(tempfp, 0, SEEK_SET);
fread(answer, N, sizeof(int), tempfp);
reverse(answer, N);
-- 
Check out my hobby project.
http://malcolmmclean.github.io/babyxrc