[C] Dev C++ fa capricci

di il
11 risposte

[C] Dev C++ fa capricci

Come da titolo, uso Dev C++ e ho questo codice:
#include <stdio.h>
#include <stdlib.h>

int main()
{
  
  int a, b, c;
  char ch1, ch2;
  
  
  FILE *f1;
  f1=fopen("a.txt", "r");
  fscanf (f1, " %s ", &ch1) ;
  fclose(f1);
  
  
  FILE *f2;
  f2=fopen("b.txt", "r");
  fscanf (f2, " %s ", &ch2) ;
  fclose(f2);

  printf("%s\n%s", ch1, ch2);
  system("PAUSE");
    
  
  return 0;
}
che, per ora, prende il contenuto di due file e li stampa a video. Quando vado per eseguire questo codice, però, il programma non viene eseguito e mi viene aperta una finestra di Visual Studio Debagger che mi chiede di fare il debug. Dov'è l'errore?

P.S.: Screenshot

11 Risposte

  • Re: [C] Dev C++ fa capricci

    Non fa capricci ... si lamenta, giustamente, per il tuo codice, che va a scrivere in memoria dove non dovrebbe.

    In questa linea

    fscanf (f1, " %s ", &ch1) ;

    tenti di leggere una stringa ma la variabile è di tipo char
  • Re: [C] Dev C++ fa capricci

    Bene, ho modificato quindi in:
     
    char ch1[10];
    char ch2[10];
    
    E ora ovviamente funziona. Però l'output è:

    ´++2
    ´++4

    Come eliminare quei segni? Non riesco a trovare errori nel codice.
  • Re: [C] Dev C++ fa capricci

    Dato che nel codice non controlli se i file esistono, molto probabilmente la fopen fallisce (perché non trova i file) e il resto del programma non può funzionare correttamente.

    Indica le cartelle del percorso oltre ai nomi dei file oppure assicurati che i file stiano nella cartella corretta.

    Ovviamente ti suggerisco di seguire un libro del linguaggio se vuoi imparare a programmare in C.
  • Re: [C] Dev C++ fa capricci

    I file esistono, li crea un altro programma. In pratica volevo provare a usare due linguaggi per fare un'operazione. Un programma in Visual Basic scrive i file a.txt e b.txt, poi questo programma in c deve fare la somma e di nuovo quello in Visual Basic che legge il risultato e lo stampa. Quindi i file esistono.
  • Re: [C] Dev C++ fa capricci

    Infatti anche includendo tutto il percorso, il risultato non cambia.
  • Re: [C] Dev C++ fa capricci

    Ho provato il codice (peraltro semplicissimo) e funziona regolarmente, a patto che il file esista e abbia un contenuto da leggere.

    Cosa c'è dentro i file? Ci sono stringhe più lunghe dei 10 caratteri che hai previsto?
  • Re: [C] Dev C++ fa capricci

    Nei file ci sono i caratteri '4' e '2'. Il problema sono quei simboli in più
  • Re: [C] Dev C++ fa capricci

    Ciao, ho compilato con Dev e va benissimo, anzi, troppo bene, dato che funziona anche se sfora la memoria, strano eh? Dev non finisce mai di sorprendere
  • Re: [C] Dev C++ fa capricci

    veigh ha scritto:


    Nei file ci sono i caratteri '4' e '2'. Il problema sono quei simboli in più
    Ma quei caratteri sono seguiti da altro?

    Puoi farci scaricare i due file di testo?
  • Re: [C] Dev C++ fa capricci

    Allora ora espongo per bene la questione. Inizio con un programma in VB2010, che crea i file a.txt e b.txt con all'interno dei valori numerici. Questo il codice:
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            My.Computer.FileSystem.WriteAllText("C:/calc/a.txt", TextBox1.Text(), False)
            My.Computer.FileSystem.WriteAllText("C:/calc/b.txt", TextBox2.Text(), False)
        End Sub
    A questo punto deve partire il programma in C (che per ora faccio partire manualmente), il quale deve prendere il contenuto di a.txt e b.txt e metterli in due variabili. A questo punto esegue l'addizione delle due variabili, e salva il risultato in un terzo file di testo, quest'ultimo verrà richiamato dal VB e verrà stampato in una textbox o label.

    Nel mio caso, dopo aver eseguito il programma in VB e aver dato i valori 2 e 4, Dev mi stampa:
    ´++2
    ´++4
    Se apro i file con notepad invece, trovo salvati solo i numeri.

    PS. Non mi fa allegare file .txt, ma il contenuto l'ho già specificato, sono i soli numeri.
  • Re: [C] Dev C++ fa capricci

    Riesci a fare uno zip di tutto per scaricarlo ? Così individuiamo più facilmente dove sbagli ...
Devi accedere o registrarti per scrivere nel forum
11 risposte