Gå til innhold

hvordan skrive ut innhold fra fil på skjermen..


Anbefalte innlegg

Hei ,

 

C programmeringen har vist seg å bli mye vanskeligere enn trodd, og nå er frist for første obligen ut og jeg har ikke klart å gjøre alle oppgavene en gang :thumbdown:

 

Det jeg sitter fast med akkurat nå er at jeg har klart å lese inn fra en fil ... og ( jeg tror at jeg legger alt innholdet fra fila i en char array , har hørt at man ikke kan definere en string array som i java i.e String[] linje... )

 

Når jeg prøver å skrive ut dette så får må jeg trykke på enter hele tiden og til slutt så henger det seg på siste char sekvens... Her kommer koden..

 

Som dere ser så har jeg også prøvd å skrive ut innholdet med en for løkke , men det er jo likt : :cry: og ikke fungerende...

 

#include <stdio.h>

        main(){
FILE *f;
char *line[100];
int i;


f = fopen("kick.tab", "r");
if(f== NULL){
 printf("failure, programmet avsluttes\n");
 return 1;
}
char c;
while((c = getchar()) != EOF){
 fscanf(f,"%s",line);
 printf("%s", line);
   }
   
   for (i=0; i<9; ++i){
       printf("%c",line[i]);
       
       }



fclose(f);

return 0;

system("pause");
}

Lenke til kommentar
Videoannonse
Annonse

(Det jeg skriver gjelder for C og de fleste C kompilatorer)

 

char *line[100];

 

Er ikke en char array, men en array med char pekere. Dvs en liste med pekere til char lister. Du trenger ikke å bruke en char peker/pointer array her, det blir bare kluss.

 

En char er en datatype som har størrelse 1 byte. For å lagre bokstaver (og tall) i C kan man bruke char datatypen.

 

For å definere 1 char (dvs 1 byte), kan man skrive:

 

char c = 'a';

 

"c" er en variabel av type char og har verdien 'a'.

 

For å definere en setning må man kombinere flere char:

 

char str[8];

 

Variabelen "str" vil inneholde 8 char (dvs 8 bytes) og kalles en char array. En char array kan inneholde så mange char du vil.

 

For å skrive til en String i Java kan du gjøre slik:

 

javaString = "Hei du!"; // dette er ulovlig i C

 

I C må man skrive til hver char eller bruker en funksjon som feks strcpy. Det er kun et tilfelle der man kan skrive til en char array slikt som i Java, og det er i deklarasjonen av en char variabel.

 

Feks:

 

char str[16] = "Hallo verden!"; // dette er OK <- "deklarasjonen av str"

 

char str0[16]; // OK <- "deklarasjonen av str0"

str0 = "Hallo verden!"; // IKKE OK <- "IKKE deklarasjonen av str0"

strcpy(str0, "Hallo verden!"); // OK

str0[0] = 'H'

str0[1] = 'a'

str0[2] = 'l'

str0[3] = 'l'

str0[4] = 'o'

str0[5] = ' '

osv...

 

Vær obs på at når du har deklarert en char array som er feks 32 bytes stor så vil du kunne oppleve at en funksjon prøver å skrive mer enn 32 bytes til din char array. Når funksjonen prøver å skrive til den 33. byten i char arrayen så vil den havne i en annen variabel eller programkode. Dette kalles "buffer overflow" og kan være et alvorlig problem. I Java sin String klasse trenger du aldri å tenke på dette.

Endret av ReddBuLL
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...