Vai al contenuto

Problema Lettura File Xcode (7.3) C++


Messaggi raccomandati

Ciao a tutti ragazzi, ho un problema con Xcode.

Cercando su internet mi sono accorto che questo software è un po' diverso rispetto agli altri riguardo la lettura dei file. Ho letto inoltre che bisogna scrivere tutto il percorso del file ma non ho mai capito come, qualcuno riesce a farmi capire? Vi scrivo il semplice programma che ho fatto:

#include <iostream>

#include <fstream>

#include <cstdlib>

using namespace std;

typedef int list[50];

int main(){

list l;int riemp=0;int i=0;

ifstream f;

f.open("file.txt");

if(f.fail()){

cout<<"I had some problems opening the file";

exit(1);

}

while(!f.eof()){

f>>l;

i++;

}

riemp=i;

}

Inoltre volevo porvi un'altra domanda: sempre su internet ho letto che la frase "program ended with exit code :0" esce quando il programma va bene e quindi non ci sono errori, allora mi chiedo, perché non mi fa la lettura??

Vi ringrazio anticipatamente

Link al commento
Condividi su altri siti

ah sì, ricordo di averci perso le notti con un programma C.

Il problema è in realtà molto semplice, XCode legge i file nella cartella dei compilati, non nella cartella dei file sorgente.

per leggere tutto da terminale infatti tu metti semplicemente il txt nella cartella dove sono contenuti i file .c perchè quando compili il file unix eseguibile viene creato nella stessa cartella.... su xcode le due cartelle sono divise.

 

In pratica apri la cartella Products, clicca sull'eseguibile unix, tasto destro, show in finder.

ti si aprirà una cartella con un path impossibile da ricordare (XD) contenuta all'interno di Libreria.

prova a mettere il txt dentro la stessa cartella.

 

Fammi sapere se funziona (sono andato a memoria, non ho provato ora perchè non ho tempo... ma se non funziona provo e ti faccio sapere se ho detto qualche cavolata).

Link al commento
Condividi su altri siti

Grazie mille per la risposta, purtroppo il file è già nella stessa cartella

 

Visto che non ero sicuro che con c++ funzionasse (quando uso c++ di solito preferisco usare eclipse) ho fatto che provare il tuo codice (ho cambiato qualche linea di codice per essere sicuro che funzionasse tutto, e ho cambiato la lista da int a char per poter scrivere anche le lettere all'interno del file di testo) (tra l'altro per incollare il codice qua sul forum ti consiglio l'utilissimo e comodo tasto <>):

#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;
typedef char list[50];
int main(int argc, const char * argv[]) {
	list l;
	int riemp=0;
	int i=0;
	ifstream f;
	f.open("file.txt");
	if(f.fail()){
		cout<<"I had some problems opening the file";
		exit(1);
	}
	while(!f.eof()){
		f>>l[i];
		cout << "inside " << l[i] << "\n";
		i++;
	}
	riemp=i;
	cout << riemp << "\n";
}

ho provato a mettere il file.txt nella cartella:

/Users/nomeutente/Library/Developer/Xcode/DerivedData/nomeprogetto-codicealfanumerico/Build/Products/Debug/

 

questa cartella viene aperta facendo tasto destro sull'eseguibile "show in finder" (l'eseguibile si trova nella cartella products di xcode ma bisogna cliccare su show in finder cliccando sull'eseguibile non sulla cartella altrimenti viene aperta la cartella del progetto con i codici sorgente).

 

Così facendo la stampa è risultata essere:

inside n

inside o

inside n

inside n

inside o

inside n

inside w

inside o

inside n

inside r

inside n

inside

12

Program ended with exit code: 0

 

il contenuto del file era appunto:

nonnonwonrn

 

Quindi quel che ti avevo scritto è corretto.

Il file viene infatti aperto, letto e vengono contate le lettere contenute al suo interno.

Se però ho capito male quel che volevi fare descrivi nuovamente il tuo problema, cercherò di aiutarti (anche perchè mi serve per tenermi allenato con il c++ che non lo uso spesso :ghghgh: ).

 

Alla prossima

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...