Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    107

    [c++] confronto nome file

    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

  2. #2
    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
    La luce è più veloce del suono,ecco xchè alcune persone sembrano brillanti fino a quando non parlano


  3. #3
    strcmp() è una funz C ANSI ed è inclusa in <cstring> e nn centra con la classe string.

    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  4. #4
    Chiedo scusa x l'errata informazione, non lo sapevo.
    Grazie Luc@s, ho imparato una cosa nuova.

    Max
    La luce è più veloce del suono,ecco xchè alcune persone sembrano brillanti fino a quando non parlano


  5. #5
    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!

  6. #6
    Utente di HTML.it L'avatar di pixer
    Registrato dal
    Oct 2000
    Messaggi
    614
    devi usare la namespace std per richiamare le funzioni delle librerie standard C++.
    MySQL Worker - The OpenSource Multiplatform MySQL database Administrator (C++ powered)
    .:[ It resumes the development !! ]:.


  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    107

    grazie

    grazie a tutti!!!

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

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.