Vai al contenuto


Paride Camasso

Problema Lettura File Xcode (7.3) C++

Recommended Posts

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

Condividi questo messaggio


Link di questo messaggio
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).

Condividi questo messaggio


Link di questo messaggio
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

Modificato da Lief

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti alla nostra comunità. È facile!

Crea un nuovo account

Accedi

Sei già iscritto? Accedi qui.

Accedi Ora

  • Statistiche forum

    528906
    Discussioni Totali
    6332339
    Risposte Totali
  • Statistiche Utenti

    122018
    Utenti totali
    14120
    Record utenti online
    Stefania Iob
    Nuovo iscritto
    Stefania Iob
    Iscritto
  • Statistiche annunci

    105
    Annunci attivi
    18
    Domande
    0
    Recensioni
    0
    Offerte
    Ultimi Annunci
    By Boston18
    mese e 13 ore
×