Windows-ban melyek azok a header fájlok, amelyek ezen program működéséhez kellenek?
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5 int main(void)
6 {
7 int hnd;
8 int r;
9 char c;
10 hnd=open("text.txt",O_RDONLY);
11 while(1)
12 {
13 r=read(hnd,&c,1);
14 if(r<1) break;
15 printf("%c",c);
16 }
17 close(hnd);
18 return 0;
19 }
Megadhatod a program futása alatt is a fájl útvonalát, vagy akár paraméterként is. Előbbi esetében szükséged van egy karaktertömbre, amelyet feltöltesz a standard bemenetből. Ha tetszőleges hosszúságú szöveget szeretnél beolvasni, akkor meg kell ismerkedned a dinamikus memóriafoglalással is, de kezdetnek megteszik a statikus tömbök is:
char path[256]; // deklarálsz egy 256 karaktert tárolni képes tömböt
fgets(path,256,stdin); // beolvasol a standard bemenetről legfeljebb 255 karaktert, vagy annál kevesebbet, az utolsó a terminális nulla lesz, amely C nyelvben a string végét jelzi.
Valószínűleg a string végén ott lesz egy '\n' karakter is, azt levágod: path[strlen(path)-1] = '\0';
Most pedig már csak az útvonalat tartalmazza, és átadhatod paraméterként az fopen()-nek. Álljék itt egy példa:
#include <stdio.h>
#include <string.h>
int main() {
FILE *fp;
char c, path[256];
printf("fajl utvonala: ");
fgets(path,256,stdin);
path[strlen(path)-1] = '\0';
if((fp = fopen(path,"r")) == NULL) {
printf("fajl megnyitasa olvasasra sikertelen.\n");
return 1;
}
while((c = fgetc(fp)) != EOF) fputc(c,stdout);
fclose(fp);
return 0;
}
Ha paraméterként szeretnéd átadni a fájlnevet, akkor pedig:
int main(int argc, char *argv[]) {
FILE *fp;
if(argc == 2) fp = fopen(argv[1],"r");
...
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!