Tak nějak jsem zvládl načíst řetězec ze souboru do proměnné. Ale potřeboval bych načíst jednotlivá čísla (float) uložená v souboru a oddělená mezerou do pole. Musím to nejřív celé načíst do nějaké proměnné jako řetěžec a pak z toho řetězce získat jednotlivá čísla, nebo jde nějak udělat, že rovnou při čtení ze souboru budu ta čísla ukládat do pole? Mělo by to být v jen v c, ne v c++. Může mi někdo napsat nějaký příklad. Dík
Fórum › C / C++
čtení čísel ze souboru
#include <stdio.h>
int main(){
char filename[] = "data.txt";
FILE *fr;
float num[3];
fr = fopen(filename, "rt");
fscanf("%f %f %f", num[0], num[1], num[2]);
fclose(fr);
return 0;
}
kisa píše:#
# To Zelenáč: Díky za radu, jen bych si dovolil opravit pár chyb, kdyby to náhodou někdo potřeboval:#
#fscanf(fr, "%f %f %f", &num[0], &num[1], &num[2]);
JJ, sry, nejak sem nat tim nepremejslel =)
Ještě bych potřeboval spočítat počet mezer v souboru. Napadlo mě toto:
while(!feof(fr))
{
if(fgetc(fr)==' ')i++;
}
fseek(fr, 0, SEEK_SET);
Funguje to, ale říkám jestli by to nešlo nějak jednodušeji. Není na to třeba nějaká fce?
Jednoduseji? Mne to tedy prijde jednoduche dost... A troufam si rict, ze na to zadna funkce neni ;-)
Ještě bych měl jeden dotaz. K načítání čísel jsme použil toto:
while(!feof(fr))
{
fscanf(fr, "%f", &v[i++]);
}
přetím jsem si alokoval paměť pro v. Takže je to pro libovolný počet čísel uložených v souboru. Problém je když tam místo některého čísla budou znaky, tak se mi to zacyklí. chtěl bych to ošetřit tak, aby když se tam ty znaky objeví, tak fscanf uloží 0 do v.
tzn. v souboru bude uloženo např:
25 25.2 245.12 fg 21 54.2
a do proměnné v se uloží:
25 25.2 245.12 0 21 54.2
Ja bych jeste pred nacitanim tech cisel projel cyklem vsechny retezce a nahradil je za 0...
mephi píše:#
# počet medzier = počet čisel -1#
#ak je to v tom istom subore a medzery su iba tam kde maju byť
Tusim, ze je to naopak.. pocet cisel = pocet mezer+1...
Vraci pocet uspesne nahranych polozek... Kdyz se budes pokouset nahrat znak, do pormene se ulozi ASCII kod toho znaku.. Tezko rict, co se stane, kdyz se pokusis nahrat retezec..
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
čtení vícemístných čísel ze souboru — založil satanůvprd
Sscanf - cteni dvou uint cisel — založil Earl Cash
Čtení souboru ve VB — založil hansk
čtení ze souboru — založil Jakub Vojáček
Cteni souboru — založil marek321
Moderátoři diskuze