Dani88
13-01-2008, 09:44
Raga sono agli inizi della programmazione in linguaggio C e C++, mi si è presentato questo problema:
ho creato la funzione (presa da un esempio fatto dal mio prof che funziona)
char *leggi_str(FILE *file_di_input)
{
char str[100];
int i = 0;
char c;
// Leggi caratteri e inserisci nella stringa sino allo spazio
while ( i < 99 && (c=getc(file_di_input)) != ' ' && c != '\n' && c != EOF )
str[i++] = c;
// Termino la stringa
str[i] = EOS;
// Se sono in fondo al file e non ho letto nulla termino
if ( c==EOF && i==0 )
return NULL;
//altrimenti restituisco copia della stringa letta
else
return strdup(str);
}
Quando però la richiamo nel main in tal modo mi da errore
#include<iostream>
using namespace std;
#include "funzioni.h"
#include <string>
int main()
{
char *s1=NULL;
FILE *prova;
prova=fopen("H:\\Università\\Fondamenti Informatica\\Programmi Miei\\prove varie\\prova.txt","r");
while ((s1=leggi_str(prova)!=NULL))
//cout<<s1;
return 1
}
Quando compilo, mi dice che, nella riga in grassetto, non può convertire da bool a char *, ma la funzione non restituisce bool, ma un puntatore alla stringa che ha duplicato...
Tra l'altro nell'esempio fatto dal mio prof funziona perfettamente ed è la stessa sintassi. :help: :help: :help:
ho creato la funzione (presa da un esempio fatto dal mio prof che funziona)
char *leggi_str(FILE *file_di_input)
{
char str[100];
int i = 0;
char c;
// Leggi caratteri e inserisci nella stringa sino allo spazio
while ( i < 99 && (c=getc(file_di_input)) != ' ' && c != '\n' && c != EOF )
str[i++] = c;
// Termino la stringa
str[i] = EOS;
// Se sono in fondo al file e non ho letto nulla termino
if ( c==EOF && i==0 )
return NULL;
//altrimenti restituisco copia della stringa letta
else
return strdup(str);
}
Quando però la richiamo nel main in tal modo mi da errore
#include<iostream>
using namespace std;
#include "funzioni.h"
#include <string>
int main()
{
char *s1=NULL;
FILE *prova;
prova=fopen("H:\\Università\\Fondamenti Informatica\\Programmi Miei\\prove varie\\prova.txt","r");
while ((s1=leggi_str(prova)!=NULL))
//cout<<s1;
return 1
}
Quando compilo, mi dice che, nella riga in grassetto, non può convertire da bool a char *, ma la funzione non restituisce bool, ma un puntatore alla stringa che ha duplicato...
Tra l'altro nell'esempio fatto dal mio prof funziona perfettamente ed è la stessa sintassi. :help: :help: :help: