Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    5

    [C] Come utilizzare parte di una stringa per aprire un file con fopen?

    L'utente inserisce da tastiera una lettera maiuscola seguita da 1 o più spazi e dal nome di un file.
    La lettera maiuscola indica l'operazione da eseguire (per cui ho scritto già le varie funzioni).
    Il problema è ottenere il nome del file per passarlo a fopen!
    Io ho scritto strcpy(nome_file,&line[2]); ma successivamente mi viene dato un errore nell'apertura del file, inoltre provando a stampare la stringa nome_file appaiono caratteri strani VVoVe:
    Allo stesso modo non mi viene con sscanf(line,"%*c %s",nome_file); . Dove sbaglio?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Invia il codice completo che hai scritto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    5
    Ecco i punti dove manipolo questa stringa

    int main(int argc,char *argv[]){
    FILE *fp;
    int n_righe,i;
    struct dati *vet;
    char line[MAX_LINE+1];




    do{
    printf("Inserire un comando");
    scanf("%s",line);
    if(strcmp(&line[0],"I")==0){
    vet=new_data(vet,line,n_righe);
    }

    }while(strcmp(line,"E")!=0);

    return 1;
    }

    struct dati *new_data(struct dati *vet,char line[],int n_righe){
    char file_name[MAX_LINE+1],conto[MAX_STR+1],data[MAX_LINE+1];
    FILE *fp;
    int n_op,i,j,k;
    float value;
    j=0;


    strcpy(file_name,&line[2]);
    fp=fopen(nome_file,"r");
    if(fp==NULL){
    fprintf(stderr,"Error opening input file.\n");
    return (0);
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Considera che la

    scanf("%s",line);

    ti permette di inserire all'interno di line i dati digitati fino al primo spazio.

    Quindi, nella line, avrai solamente il primo carattere (motivo per cui funziona la seguente strcmp che, nel caso di linea completa, non funzionerebbe) e non tutto quello che ti aspetti.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    5
    Ma quindi come dovrei fare?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Puoi inserire i due dati separatamente con due scanf, oppure usi una fgets con lo stdin.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.