Nel tuo codice ci sono 3 errori:
1)la funzione principale main() se non specificato
nulla (come nel tuo codice) deve restituire un valore di tipo int.
Quindi alla fine del programma devi inserire
return (qualcosa); <-- (se il programa non causa errori)
return(0);
OPPURE dichiari main() di tipo void (void non restituisce valori)
e quindi alla fine non richiede il return qualcosa);
void main()
2)if((fp = fopen("c:\\documenti\\prova.txt","r")) == NULL)
non apre il file prova.txt ma si limita soltanto a verificare
se il file esiste QUINDI
non puoi alla fine del tuo codice chiudere il file!!!
se non lo hai prima aperto
un esempio corretto sarebbe stato questo:
codice:
if((fp=fopen("c:\\documenti\\prova.txt","r"))==NULL)
printf("Impossibile trovare\nil file specificato nel patch\n");
else{
fp=fopen("c:\\documenti\\prova.txt", "r"); //ORA lo apro
//leggo il file...
fclose(fp); //e all'interno dell'ELSE lo chiudo!!!
}
}
3)al puntatore s devi passargli un indirizzo
e tu non lo fai!!!
Nel tuo esempio devi dichiarare una variabile di tipo char[100]
e far puntare s al primo elemento dell'array char[100]
così:
codice:
#include <stdio.h>
void main(){
FILE *fp;
char *s, stringa[500];
s=stringa; //ora s punta al primo elemento di stringa (s=stringa[0])
if((fp = fopen("c:\\documenti\\prova.txt","r")) == NULL)
printf("Impossibile trovare\nil file specificato nel patch\n");
else{
fp = fopen("c:\\documenti\\prova.txt", "r");
fscanf(fp,"%s",s);
printf("%s",s);
fclose(fp);
}
}
N.B. La funzione fscanf()
funzona come scanf() tranne per il fatto che legge
le informazioni dallo stream specificato (nel tuo caso il file .txt)
invece che dallo standard-INPUT (la tastiera).
Per quello che cerchi di fare tu non va bene
in quanto sia scanf() che fscanf() leggono una stringa fin quando
non trovano uno spazio es: se la stringa da leggere
è "PIPPO PAPERINO"
con scanf() e fscanf() leggi soltanto "PIPPO"