Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] Problema nell'esecuzione programma che scrive su file

    Salve a tutti, mi presento, mi chiamo giorgio, abito a napoli e frequento la facoltà di scienze informatiche, sono nuovo di qui ma ho seguito molte volte le vostre guide e volevo chiedervi un aiuto diretto.

    il mio prof di programmazione ha fissato x domani una prova intercorso e ci ha lasciato degli esercizi guida da svolgere.

    uno di questi che vi posto, mi da dei problemi nell'esecuzione. vi chiedo, cortesemente, di controllarmi il sorgente per capire qual'è il problema.

    il testo dell'esercizio è questo:

    "Eser_1 Sostituire in un file di testo già creato, una stringa con un'altra; entrambe vengono fornite in input dall'utente (sia quella che vogliamo modificare, sia la nuova che vogliamo inserire). Creare un nuovo file di testo che sia la copia del primo ma con la stringa scelta, modificata."

    Praticamente, ho un file già creato, il programma deve leggere il contenuto del file, poi chiede quale parola deve modificare, poi chiede quale parola deve inserire e poi alla fine deve salvare tutto su un nuovo file.

    ecco il sorgente mio con gli errori

    codice:
    #include<stdio.h>
    
    int main(){
    
    int n, i,j, lung,lung1, trv;
    char t, c, str[100], str2[100], str3[100];
    FILE *fp2;
    FILE *fp;
    fp=fopen("originale.txt","r");
    fp2=fopen("copia.txt","w");
    while(!feof(fp))      {
    
                        c=fgetc(fp);
                        printf("%c", c);
                        }
    fclose(fp);
    
    printf("\n\nInserisci la lunghezza dell'array1:\n");
    scanf("%d", &lung);
    
    printf ("\n\nInserisci la parola che vuoi modificare:\n");
    
    for (i=0;i<lung;i++)
    {
    scanf ("%c", &str[i]);
    }
    
    printf("\n\nInserisci la lunghezza dell'array2:\n");
    
    scanf("%d", &lung1);
    
    printf ("In cosa la vuoi modificare?\n");
    
    for (i=0;i<lung1;i++)
    {
    scanf ("%c", &str2[i]);
    }
    fp=fopen("originale.txt","r");
    if(fp!=NULL)
    {
    while(!feof(fp))  {
    i=0;
    c=fgetc(fp);
    while(c!=' ')
    {
                  str3[i]=c;
                  ++i;
                  c=fgetc(fp);
    }
    i=0;
    trv=1;
    
    while(i<lung-1 && trv==1)
    {
                 if(str[i]==str3[i])         
                 {
                 ++i;
                 
                 trv=1;
                 }
    else trv=0;
    }
    
    if(trv==0)        
    {
                     for(j=0;j<i+1;j++)
                     {
                        fprintf(fp2,"%c",&str3);
                     }              
    }   
    else if (trv==1)
    {
       for(j=0;j<lung1+1;j++)
                     {
                        fprintf(fp2,"%c",&str2);
                     }  
     } }
    }
    else printf("il file nn esiste");            
    fclose(fp);
    fclose(fp2);
    
    system("PAUSE");
    return 0;
    }
    In attesa di risposte, vi ringrazio anticipatamente!!

  2. #2
    Codice PHP:
    gcc -Wall main.c
    main
    .cIn function 'main':
    main.c:68warningformat '%c' expects type 'int'but argument 3 has type 'char (*)[99u]'
    main.c:75warningformat '%c' expects type 'int'but argument 3 has type 'char (*)[99u]' 

  3. #3
    Originariamente inviato da MacApp
    Codice PHP:
    gcc -Wall main.c
    main
    .cIn function 'main':
    main.c:68warningformat '%c' expects type 'int'but argument 3 has type 'char (*)[99u]'
    main.c:75warningformat '%c' expects type 'int'but argument 3 has type 'char (*)[99u]' 
    quando lo compilo con il dev-c++ non mi da errori, quando pero lo apro in esecuzione nel momento in cui il prog deve scrivere nel nuovo file tutto il testo modificato mi esce questo errore:
    "l'istruzione a 0x0040145f ha fatto riferimento alla memoria a 0x00230000. la memoria non poteva essere scritta in "written"

    ti posto anche lo screen.
    Immagini allegate Immagini allegate
    • Tipo di file: jpg 1.jpg‎ (15.4 KB, 26 visualizzazioni)

  4. #4
    ad esempio, in
    Codice PHP:
    while(c!=' ')
    {
        
    str3[i]=c;
        ++
    i;
        
    c=fgetc(fp);

    se non viene trovato uno spazio, il ciclo gira "ad infinitum" e se ti va bene.. finisce in un crash ;-)

  5. #5
    cosa mi consigli allora??? sono un pò in crisi!!

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.