Linguaggio c getc
ciao.
vorrei fare un programma usando getc,
che legge l' imput di un file testo "righe.txt"
e lo restituisce a schermo "standard output"
questo programma con fgets funziona .
/*
char *fgets(char *s, int size, FILE *stream);
char *gets(char *s);
*/
#include
#include
#define ROW_SIZE 200
#define FILE_NAME "Righe.txt"
main()
{
FILE *fpSource;
char sBuffer[ROW_SIZE];
if((fpSource = fopen("righe.txt", "r")) != NULL)
{
printf("Il contenuto del file %s:\n\n", FILE_NAME);
while((fgets(sBuffer, ROW_SIZE, fpSource)) != NULL)
{
printf("%s", sBuffer);
}
}
else
{
perror("Errore in apertura del file. \n");
}
fclose(fpSource);
}
-------------------------------------------------------------------
/*
questo perche non funziona ?
*/
#include
#include
#define ROW_SIZE 200
#define FILE_NAME "Righe.txt"
main()
{
FILE *fpSource;
char sBuffer[ROW_SIZE];
char a[2];
if((fpSource = fopen("righe.txt", "r")) != NULL)
{
printf("Il contenuto del file %s: con getc \n\n", FILE_NAME);
while((getc(sBuffer, fpSource)) != NULL )
{
printf("%s", sBuffer);
}
}
else
{
perror("Errore in apertura del file. \n");
}
fclose(fpSource);
}
------------------------------------------------
datemi qualche consiglio
ciao grazie .
vorrei fare un programma usando getc,
che legge l' imput di un file testo "righe.txt"
e lo restituisce a schermo "standard output"
questo programma con fgets funziona .
/*
char *fgets(char *s, int size, FILE *stream);
char *gets(char *s);
*/
#include
#include
#define ROW_SIZE 200
#define FILE_NAME "Righe.txt"
main()
{
FILE *fpSource;
char sBuffer[ROW_SIZE];
if((fpSource = fopen("righe.txt", "r")) != NULL)
{
printf("Il contenuto del file %s:\n\n", FILE_NAME);
while((fgets(sBuffer, ROW_SIZE, fpSource)) != NULL)
{
printf("%s", sBuffer);
}
}
else
{
perror("Errore in apertura del file. \n");
}
fclose(fpSource);
}
-------------------------------------------------------------------
/*
questo perche non funziona ?
*/
#include
#include
#define ROW_SIZE 200
#define FILE_NAME "Righe.txt"
main()
{
FILE *fpSource;
char sBuffer[ROW_SIZE];
char a[2];
if((fpSource = fopen("righe.txt", "r")) != NULL)
{
printf("Il contenuto del file %s: con getc \n\n", FILE_NAME);
while((getc(sBuffer, fpSource)) != NULL )
{
printf("%s", sBuffer);
}
}
else
{
perror("Errore in apertura del file. \n");
}
fclose(fpSource);
}
------------------------------------------------
datemi qualche consiglio
ciao grazie .
Risposte
Mi stupisce che quel programma venga compilato. Il prototipo di getc è
int getc(FILE *stream);
Richiede un solo argomento e tu ne hai passati due. Inoltre getc serve per leggere un solo carattere ma lo usi come fgets che legge un'intera riga dal file.
int getc(FILE *stream);
Richiede un solo argomento e tu ne hai passati due. Inoltre getc serve per leggere un solo carattere ma lo usi come fgets che legge un'intera riga dal file.
hai proprio ragione !!
mi sono accorto del errore .
grazzie a te.
fgetc(), getc(), getchar(), ungetc()
legge un carattere
fgets(), gets()
legge una linea
adesso vedo come posso fare !!
metto la soluzione nel forum !!
mi sono accorto del errore .
grazzie a te.
fgetc(), getc(), getchar(), ungetc()
legge un carattere
fgets(), gets()
legge una linea
adesso vedo come posso fare !!
metto la soluzione nel forum !!
vorrei usare getc
che legge l' imput di un file testo "righe.txt"
e lo restituisce a schermo "standard output"
fgetc(), getc(), getchar(), ungetc()
legge un carattere
char nc;
nc = getc(fpSource);
printf("%s", nc);
mi sembra che non e possibile utilizzare getc.
perche non riesco ha fare il loop .
-------------------------------------
#include
#define ROW_SIZE 200
#define FILE_NAME "Righe.txt"
/*
conta i caratteri in ingresso prima versione
*/
main()
{
FILE *fpSource;
char sBuffer[ROW_SIZE];
if((fpSource = fopen("righe.txt", "r")) != NULL)
{
long nc;
nc = 0;
while (getc(fpSource) != EOF)
++nc;
printf("il numero e : %ld \n", nc);
}
else
{
perror("Errore in apertura del file. \n");
}
}
che legge l' imput di un file testo "righe.txt"
e lo restituisce a schermo "standard output"
fgetc(), getc(), getchar(), ungetc()
legge un carattere
char nc;
nc = getc(fpSource);
printf("%s", nc);
mi sembra che non e possibile utilizzare getc.
perche non riesco ha fare il loop .
-------------------------------------
#include
#define ROW_SIZE 200
#define FILE_NAME "Righe.txt"
/*
conta i caratteri in ingresso prima versione
*/
main()
{
FILE *fpSource;
char sBuffer[ROW_SIZE];
if((fpSource = fopen("righe.txt", "r")) != NULL)
{
long nc;
nc = 0;
while (getc(fpSource) != EOF)
++nc;
printf("il numero e : %ld \n", nc);
}
else
{
perror("Errore in apertura del file. \n");
}
}
"luca98":
mi sembra che non e possibile utilizzare getc.
perche non riesco ha fare il loop .
Ciao, per prima cosa ti consiglio di mettere il codice tra gli appositi tag, per renderlo "leggibile", grazie!
Passando al tuo problema, la prima cosa che vuoi fare è leggere il numero di caratteri contenuti in un file con la funzione getc()? Questo potrebbe andare:
#include <stdio.h> FILE* source = NULL; int c = 0; int nc = 0; int main() { if((source = fopen("source.txt", "r")) != NULL) { do { c = getc(source); nc++; } while(c != EOF); } printf("Numero di caratteri: %d\n", nc); fclose(source); }
Se ci sono problemi, sono qui...
Ciao!
ciao .
sarebbe bello fare un programma che invece di
prendere le righe dal file e le spedirle allo standard autput
come questo :
#include
#include
#define ROW_SIZE 200
#define FILE_NAME "Righe.txt"
main()
{
FILE *fpSource;
char sBuffer[ROW_SIZE];
if((fpSource = fopen("righe.txt", "r")) != NULL)
{
printf("Il contenuto del file %s:\n\n", FILE_NAME);
while((fgets(sBuffer, ROW_SIZE, fpSource)) != NULL)
{
printf("%s", sBuffer);
}
}
else
{
perror("Errore in apertura del file. \n");
}
fclose(fpSource);
}
----------------------------------------
prendesse i singoli caratteri e ... fuori in standard input .
come questo che non funziona .
#include
main()
{
FILE *fpSource;
if((fpSource = fopen("righe.txt", "r")) != NULL)
{
int c, nl;
char *cn;
nl = 0;
while ((c=getc(fpSource)) != EOF)
{
cn=getc(fpSource);
printf("il t'esto e :\n");
printf("%s",cn);
if (c == '\n')
{
++nl;
}
}
printf("le righe sono : %d\n", nl);
}
else
{
perror("Errore in apertura del file. \n");
}
}
prova_lettura_file6.c: In function ‘main’:
prova_lettura_file6.c:15: warning: assignment makes pointer from integer without a cast
ciao
e grazie del aiuto .
sarebbe bello fare un programma che invece di
prendere le righe dal file e le spedirle allo standard autput
come questo :
#include
#include
#define ROW_SIZE 200
#define FILE_NAME "Righe.txt"
main()
{
FILE *fpSource;
char sBuffer[ROW_SIZE];
if((fpSource = fopen("righe.txt", "r")) != NULL)
{
printf("Il contenuto del file %s:\n\n", FILE_NAME);
while((fgets(sBuffer, ROW_SIZE, fpSource)) != NULL)
{
printf("%s", sBuffer);
}
}
else
{
perror("Errore in apertura del file. \n");
}
fclose(fpSource);
}
----------------------------------------
prendesse i singoli caratteri e ... fuori in standard input .
come questo che non funziona .
#include
main()
{
FILE *fpSource;
if((fpSource = fopen("righe.txt", "r")) != NULL)
{
int c, nl;
char *cn;
nl = 0;
while ((c=getc(fpSource)) != EOF)
{
cn=getc(fpSource);
printf("il t'esto e :\n");
printf("%s",cn);
if (c == '\n')
{
++nl;
}
}
printf("le righe sono : %d\n", nl);
}
else
{
perror("Errore in apertura del file. \n");
}
}
prova_lettura_file6.c: In function ‘main’:
prova_lettura_file6.c:15: warning: assignment makes pointer from integer without a cast
ciao
e grazie del aiuto .
Perfavore, metti il codice tra gli appositi tag "code". Grazie.
Inoltre, potresti spiegarmi a parole quello che vuoi ottenere? Non mi è ben chiaro. Tu vuoi:
1) Aprire un file.
2) Leggerne carattere per carattere e memorizzare il tutto in un buffer.
3) Alla fine della lettura scrivere il buffer sullo standart output.
E' questo ciò che vorresti ottenere?
Ciao!
PS: Mi raccomando il codice tra i tag, ci vuole un secondo.
Inoltre, potresti spiegarmi a parole quello che vuoi ottenere? Non mi è ben chiaro. Tu vuoi:
1) Aprire un file.
2) Leggerne carattere per carattere e memorizzare il tutto in un buffer.
3) Alla fine della lettura scrivere il buffer sullo standart output.
E' questo ciò che vorresti ottenere?
Ciao!
PS: Mi raccomando il codice tra i tag, ci vuole un secondo.
si .
e proprio questo che vorrei ottenere !
e proprio questo che vorrei ottenere !
come questo che non funziona . #include<stdio.h> main() { FILE *fpSource; if((fpSource = fopen("righe.txt", "r")) != NULL) { int c, nl; char *cn; nl = 0; while ((c=getc(fpSource)) != EOF) { cn=getc(fpSource); printf("il t'esto e :\n"); printf("%s",cn); if (c == '\n') { ++nl; } } printf("le righe sono : %d\n", nl); } else { perror("Errore in apertura del file. \n"); } } prova_lettura_file6.c: In function ‘main’: prova_lettura_file6.c:15: warning: assignment makes pointer from integer without a cast ciao
oppire anche cosi , ma non capisco perche non funziona
prova_lettura_file6.c: In function ‘main’:
prova_lettura_file6.c:13: error: incompatible types in assignment
prova_lettura_file6.c:18: warning: comparison between pointer and integer
#include<stdio.h> /* conta il numero di righe del testo */ main() { FILE *fpSource; if((fpSource = fopen("righe.txt", "r")) != NULL) { int nl; char cn[2]; nl = 0; while ((cn=getc(fpSource)) != EOF) { printf("il testo e :\n"); printf("%s",cn); if (cn == '\n') { ++nl; } } printf("le righe sono : %d\n", nl); } else { perror("Errore in apertura del file. \n"); } }
prova_lettura_file6.c: In function ‘main’:
prova_lettura_file6.c:13: error: incompatible types in assignment
prova_lettura_file6.c:18: warning: comparison between pointer and integer
Attento che "cn" è un array di caratteri, non una variabile di tipo carattere. Scrivendo senza l'indice si intende il puntatore al primo elemento dell'array, e quindi è incompatibile con gli assegnamenti che provi a fare.
#include<stdio.h> /* conta il numero di righe del testo */ main() { FILE *fpSource; if((fpSource = fopen("righe.txt", "r")) != NULL) { int nl; char cn; nl = 0; printf("il testo e :\n"); while ((cn=getc(fpSource)) != EOF) { printf("%c",cn); putc(cn, stdout); if (cn == '\n') { ++nl; } } printf("\n\tle righe sono : %d\n", nl); } else { perror("Errore in apertura del file. \n"); } }
int fgetc(FILE *stream); | int fputc(int c, FILE *stream); int getc(FILE *stream); | int putc(int c, FILE *stream); int getchar(void); | int putchar(int c); int ungetc(int c, FILE *stream); | --------------------------------------------------------------------------------------------- char *fgets(char *s, int size, FILE *stream); | int fputs(const char *s, FILE *stream); char *gets(char *s); | int puts(const char *s); ------------------------------------------------------------------------------------------------------------
questa soluzione dovrebbe andare bene ma
ci sono dei caratteri ha video che non vengono fuori .
tipo la "a" acentata oppure l'apostrofo .
chissa perche ???
qualcuno lo sa
ciao grazie .[code][/code]