Hulp nodig met in kwadraat

Status
Niet open voor verdere reacties.

tboekhorst

Nieuwe gebruiker
Lid geworden
4 dec 2018
Berichten
3
Hallo,

Dit is mijn code:

#include <stdio.h>

int main(void) {
FILE *fp;
fp = fopen( "de_waarde_een.txt", "r" );
char leesLijn[150];

while(!feof(fp)){
fgets(leesLijn, 150, fp);
puts(leesLijn);
}

fclose( fp );

return 0;
}

In bestand "de_waarde_een.txt staat het volgende:
1
2
3
4
5
6
7
8
9
10

De opdracht luidt als volgt:
Lees het bestand van opdracht 2.2 uit en toon van elk getal het kwadraat.
Ik heb alleen geen idee hoe ik de waarde uit leesLijn kan kwadrateren.
Please help!

Groeten,
Tim
 
Door het getal met zichzelf te vermenigvuldigen?
 
Snap ik, maar dit gaat niet. Dus weet niet hoe het wel lukt..

leesLijn = leesLijn * leesLijn
printf("%d", leesLijn);

Thanks voor je snelle reactie trouwens!
 
Laatst bewerkt:
Is dat niet een kwestie van "leesLijn" als int iitialiseren in plaats van een char?:

char leesLijn[150]; wordt: int leesLijn[150];
 
Laatst bewerkt:
Hallo,


Het definieren van de array leesLijn als int array in plaats van char array werkt niet. Dat komt omdat de verschillende karakters nog steeds een eigen element in de array krijgen.

Als je bijvoorbeeld '10' invult, dan wil je graag 1 element in je array hebben (of gewoon een variable) met daarin het getal 10. Echter leest fgets nog steeds de karakters los van elkaar, en krijg je dus een array met 3 elementen: {49, 48, 0} (de ascii codes van de '1', de '0', en dan een NULL byte om het einde van de string aan te geven). Hiervoor maakt het geen verschil of je een char array of een int array gebruikt.

Waar het verschil zit tussen een char array en een int array is in hoe groot de losse array elementen kunnen zijn. Char gaat typisch niet hoger dan 255 (één byte), terwijl int vaak tot rond de 4 miljard gaat (vier bytes). Dit kan echter verschillen tussen computer architecturen en compilers, en daar kan je dus niet altijd op rekenen (mocht dat wel een vereiste zijn, kijk dan naar int32_t en de andere varianten daarvan).


Ik zal dan ook nog even toevoegen hoe ik zou omgaan met het converteren van een string naar een int. Vaak wordt hiervoor (zoals het bovenste antwoord in de link die Edmoor geplaatst heeft) "scanf" gebruikt. Ik vind het zelf prettiger om functies als "atoi", "atol", of "strtol" te gebruiken. Om te weten hoe deze functies te gebruiken zijn kijk ik zelf altijd in de man pages. Als je Linux gebruikt kan je deze vinden via de commandline (commando 'man strtol'). Anders kan je ze ook online vinden: http://man7.org/linux/man-pages/man3/strtol.3.html


Ik hoop dat dit nog wat extra nuttige informatie is voor degenen die dit nog tegenkomen,

MartinJM
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan