|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jun 2008
Messaggi: 58
|
[C] Aiuto creare file (DEVC++)
Il codice che segue dovrebbe creare un file. L'intenzione è quella di passare il nome del file alla procedura acquisendolo dal main. Non commette errori in compilazione ma quando lo eseguo non appena premo invio (subito dopo aver inserito il nome del file) appare l'avviso di segnalazione di errore a microsoft. Grazie in anticipo.
#include<stdio.h> void creaFile(char *name){ FILE *fp; fp = fopen(name, "wb"); if (fp==NULL) printf("\nErrore:file non creato"); getchar(); } main(){ char *FileName; printf("\nInserisci il nome del File: "); gets(FileName); creaFile(FileName); } Ultima modifica di ivan p : 30-06-2009 alle 18:21. |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Devi allocare lo spazio per la variabile FileName. Ti consiglio, inoltre, di usare fgets al posto di gets:
Codice:
#include <stdio.h> #include <string.h> #define BUFFER_SIZE 256 void creaFile(char *name) { FILE *fp; fp = fopen(name, "wb"); if (fp==NULL) { printf("\nErrore: file '%s' non creato", name); return; } fclose(fp); } int main() { int len; char FileName[BUFFER_SIZE]; printf("\nInserisci il nome del File: "); fgets(FileName, BUFFER_SIZE - 1, stdin); len = strlen(FileName); /* Togliamo il newline finale */ if ( len > 0 && FileName[len - 1] == '\n' ) FileName[len - 1] = '\0'; creaFile(FileName); } |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jun 2008
Messaggi: 58
|
Premettendo che ho iniziato a programmare da poco:
potresti spiegarmi il codice dalla riga che inizia con "len"? |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
Quote:
Codice:
len = strlen(FileName); PS: Ti consiglio di cambiare ambiente di sviluppo, Dev-Cpp è obsoleto e buggato; ci sono ottime alternative gratuite come Code::Blocks o Visual C++ Express (funziona anche col C). |
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jun 2008
Messaggi: 58
|
So come funziona la funzione srtlen, ho detto che non avevo capito il codice dalla riga "len", non solo quella riga. Non capisco cosa fa e a quale scopo lo fa l' if.
Utilizzo il DevC++ perchè il nostro prof ci fa usare questo ed è lo stesso che userò per l'esame. |
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
Quote:
Quote:
![]() |
||
![]() |
![]() |
![]() |
#7 | |
Member
Iscritto dal: Jun 2008
Messaggi: 58
|
Quote:
|
|
![]() |
![]() |
![]() |
#8 | |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
Questa operazione è necessaria perchè la funzione fgets pone anche il carattere '\n' nella stringa e, quindi, la funzione creaFile darebbe errore se non lo togliessimo. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:04.