|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
|
[C++] La funzione strdup mi restituisce "bool" invece che un puntatore
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) Codice:
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 Codice:
#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 } Tra l'altro nell'esempio fatto dal mio prof funziona perfettamente ed è la stessa sintassi. ![]() ![]() ![]()
__________________
Lego ™ Fans Club |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
while ((s1=leggi_str(prova))!=NULL)
Certo che brutto questo miscuglio di C e C++ ![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
|
ma infatti qst mio prof è troppo suonato, figurati che ho dovuto farmi spiegare le struct dall'assistente di laboratorio (faccio ing informatica) xkè nn ci avevo capito un tubo. Qui ha usato questa funzione self-made
![]() Cmq grazie davvero ![]()
__________________
Lego ™ Fans Club |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
La aprentesi c'era, ma era in fondo
![]() In ogni caso l'operatore != aveva precedenza sull'operatore = ed effettuava prima il confronto ritornando un bool e poi lo assegnava ad s1. In ogni caso bastava usare fscanf o fgets al posto di quella funzione ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
|
io infatti l'avrei fatto con fscanf ma boh...guardando la soluzione dell'esame mi aveva colpito questa cosa e allora mi ci sono messo a cercare di capire un po
![]()
__________________
Lego ™ Fans Club |
![]() |
![]() |
![]() |
#6 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
Quote:
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:48.