Tuli sellainen ongelma vastaan tekemässäni ohjelmassa että pitäisi saada avattua tekstitiedosto tietystä kansiosta.
Siihen asti onnistuu hyvin mutta kun pitäisi vielä saada syötettyä sen avattavan tekstitiedoston nimi joka tietystä kansiosta avataan.
Kuinka tämä saadaan onnistumaan?
Siihen asti onnistuu hyvin mutta kun pitäisi vielä saada syötettyä sen avattavan tekstitiedoston nimi joka tietystä kansiosta avataan.
Kuinka tämä saadaan onnistumaan?
Vastaukset 5
Vanhimmat
#include
char tiedosto[256]="c:\\hakemisto\\";
void main(){
FILE *stream;
printf("Anna tiedosto: ");
scanf("%s",&tiedosto[13]);
if((stream=fopen(tiedosto,"r"))== NULL ){
printf("Tiedostoa ei löytynyt:%s",tiedosto);
return;
}
fclose(stream);
}
Jos tämä toimii niin enpä ollut kaukana oikeasta :)
Tuli mieleen että jos tuolla tekniikalla kysyn tiedoston nimeä ja myöhemmin ohjelmassa tarvitsisin sitä nimeä tiedoston tallennukseen. Kuinka se onnistuisi että saisi kansioon tallennettua?
Kun käytän tiedosto[] tai tiedosto[256] ei tallenna sitä kansioon vaan tulee bad address..
Ja jos on pelkkä tiedosto tulee sanomaksi "Is a directory"
Kyseessä siis linux ja kokeilin char tiedosto[256]="hakemisto//"; ym. mutta ei onnaa..
Huomasinkin just että se pitää olla 13 maksimimerkkinä. Niin sitten toimii.
Miksi tuossa on tiedoston nimenä 13 merkin rajoitus? Saako sitä pitemmäksi jotenkin? :)
missä on 13 merkin rajotus? scanf(blää,&tiedosto[13]) tarkoittaa että scanf funktio kirjottaa sen käyttäjän antaman syötteen vasta 13:sta alkiosta eteenpäin siihen tiedosto-bufferiin. jos siinä olisi pelkkä tiedosto, niin scanf alottaisi kirjottamisen kohdasta 0 ja täten ylikirjottaisi sen alun c:\\kansio\\päläpälä.