|
|||||||
|
|
|
![]() |
|
|
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: 7029
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:12.




















