Newsgroup: it.comp.lang.c
Titolo: ma perchè diavolo non funziona

salve NG!
le linee di codice maledette sono:
char a[100];
int i, j;
FILE *infile;
printf("Inserire input: ");
for(i=0;i<100;i++)
scanf("%c",&a[i]);
infile=fopen("nome_file","w");
for(j=0;j<100;j++)
fprintf(infile,"%c\n", a[j]);
fclose(infile);
il programma smette di funzionare quando ha effettuato un numero di letture
(scanf) pari alla lunghezza dell'input dato da tastiera e non crea affatto
il file nome_file.
per favore aiutatemi!
la mia e-mail č: 
red....@tiscalinet.it

Il programma a me funziona, hai provato a dargli una path oltre al nome del
file : magari ti crea il file e non sai dove lo mette, prova cosi' (con un
path) :
------------------------------
#include<stdio.h>
#define N 100
int main()
{
    char a[N];
    int i, j;
    FILE *infile;
 printf("Inserire input: ");
    for(i=0;i<N;i++)
        scanf("%c",&a[i]);
    infile=fopen("c:\\windows\\desktop\\nome_file","w");
    for(j=0;j<N;j++)
        fprintf(infile,"%c\n", a[j]);
    fclose(infile);
    return 0;
}
-------------------------
Ti sconsiglio l'uso di scanf"%c" in questo caso, come l'uso di fprintf"%c".
Perche' un carattere solo alla colta quando hai a che fare con stringhe ?
Alex




> infile=fopen("nome_file","w");
non č che stai usando un compilatore per dos, che non ti crea un file di 9
lettere?

 comunque il problema non è questo: lavoro sotto linux e il compilatore è
il gccr.
Il vero problema è che non solo il programma non crea il file ma non legge
nemmeno l'input; infatti se provo a stampare direttamente il risultato con
un for e una  printf il programma non funziona comunque.
si blocca subito dopo aver dato l'input e invio.
se hai qualche idea ti prego di farmelo sapere.




per favore aiutatemi!
A me funziona:

 > comunque il problema non è questo: lavoro sotto linux e il compilatore è
si blocca e basta o dà qualche errore? hai controllato i permessi della
cartella?

 il file nome_file.
Il prog funziona perfettamente (con un include stdio.h e un main :-)
Credo tu non abbia chiaro il funzionamento della shell dove lavori
prova a fare un echo di 100 caratteri a mettici in pipe il prog
vedrai che funziona correttamente.
Il fatto e' che il terminale nel quale stai lavorando non funziona
per default in "char mode" cioe' non invia ogni carattere premuto
all'applicazione che sta facendo la lettura da stdin ma gli invia un
pacchetto di byte dopo avere premuto un char SPECIALE (enter).
Per far si che si metta a lavorare in char mode credo si debbano usare
degli ioctl verso stdin. Ma di questo non ne so nulla.
Spero di essere stato chiaro. 
Saluti, Matteo. 
-- 
  Matteo Nastasi  -  Milano - Italy  | HomePage: 
web.tiscalinet.it/nastasi
                                     | ICQ-Numb:        38095675
  Sostenere e supportare GNU/Linux ! | E-Mail:   nast...@SPAMtiscalinet.it 
                                     |  (togli N e SPAM per l'indir. vero)

 si blocca subito dopo aver dato l'input e invio.
Ma tu hai inserito 100 caratteri ?
Perchè altrimenti resta in attesa di quelli che mancano... ;)
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)