PDA

Visualizza la versione completa : [c++] confronto nome file


raphi01
16-09-2003, 19:35
ciao ho un problema (penso stupido ma che non so risolvere..)
leggo da linea comando il nome di un file (nome_file), leggo tutti i file presenti in una directory e li scrivo in file (cur_dir.txt), poi leggo riga per riga il file (cur_dir.txt) e confronto con nome_file:

#include <stdio.h>
#include <stdafx.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>

main()
{
char nome_file[30];
cout << "digita il nome del file: ";
cin>>nome_file;

/* inserisco tutti i nomi dei file presenti nella directory corrente in un file fittizio cur_dir.txt*/

system("DIR .\\*.* /a:-d /b > cur_dir.txt");

/* apro in lettura il file fittizio e verifico se il file da ricercare presente tra i file*/

ifstream in("cur_dir.txt");

char riga_file[30];
int ii=0;

while(in>>riga_file)
{
//cout << riga_file << endl;
if (riga_file == nome_file)
{
// ii++;
/* cout << ii << " _" << riga_file << "_ _" << nome_file << "_" << endl;*/
cout << "File Esistente" << endl;
break;
}
}

in.close();

// elimino il file temporaneo
//system("DEL .\\cur_dir.txt");

return 0;
}

il problema e' che l'if non mi riconosce quando il file c'e' e cosi' non mi stampa a video nulla (ho fatto la prova inversa, cioe' l'if sono diversi con un contatore e la scrittura a video sia del contenuto del file cur_dir.txt che la stringa nome_file, adesso e' commentata, e mi mostra proprio che non li riconosce uguali..)

che fare???
grazie e ciao

m@ximo
16-09-2003, 21:26
Se riga_file una stringa, prova a sostituire

if(riga_file == nomefile)

con

if(strcmp(riga_file,nomefile))

una funzione della classe string, infatti dovrai fare:

#include <string>

Spero vada bene

Max

Luc@s
16-09-2003, 21:33
strcmp() una funz C ANSI ed inclusa in <cstring> e nn centra con la classe string.

:ciauz:

m@ximo
16-09-2003, 21:38
Chiedo scusa x l'errata informazione, non lo sapevo.
Grazie Luc@s, ho imparato una cosa nuova.

Max

Storm Sentry
17-09-2003, 13:31
un piccolo appunto ke forse ti serve....per confrontare due stringhe con strcmp si fa cosi':


if (!strcmp (str1,str2)) {
.
.
.
.
}

(strcmp restituisce 0 se le due stringhe sono uguali, un numero diverso da 0 altrimenti)

ciauz!
:ciauz:

pixer
17-09-2003, 13:38
devi usare la namespace std per richiamare le funzioni delle librerie standard C++.

raphi01
17-09-2003, 15:13
grazie a tutti!!!

..ma mi sa che fra non molto avro' ancora bisogno di una mano..

ciao

Loading