Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
inizio
leggi(articolo,fp)
mentre(fine file(fp)==false) esegui
scrivi(stampante,articolo.descrizione,articolo.prezzo)
leggi(articolo,fp)
ripeti
fine
il programma sotto è ciò che sn riusciyto a fare ma nn funziona questi sn gli errori potete aiutarmi?
documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(19) : error C3861: 'registra': identificatore non trovato
1>c:\documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(20) : error C2665: 'fclose': nessuno dei 2 overload potrebbe convertire tutti i tipi di argomenti
1> c:\programmi\microsoft visual studio 9.0\vc\include\stdio.h(202): potrebbe essere 'int fclose(FILE *)'
1> c:\programmi\microsoft visual studio 9.0\vc\include\stdio.h(202): o 'int fclose(FILE *)'
1> durante la ricerca di corrispondenza con l'elenco di argomenti '(const char [12])'
1>c:\documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(22) : error C3861: 'stampa': identificatore non trovato
1>c:\documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(23) : error C2665: 'fclose': nessuno dei 2 overload potrebbe convertire tutti i tipi di argomenti
1> c:\programmi\microsoft visual studio 9.0\vc\include\stdio.h(202): potrebbe essere 'int fclose(FILE *)'
1> c:\programmi\microsoft visual studio 9.0\vc\include\stdio.h(202): o 'int fclose(FILE *)'
1> durante la ricerca di corrispondenza con l'elenco di argomenti '(const char [12])'
1>c:\documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(34) : error C2664: 'gets': impossibile convertire il parametro 1 da 'std::string' a 'char *'
1> Nessun operatore di conversione definito dall'utente è disponibile o è impossibile chiamare l'operatore
1>c:\documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(47) : error C2664: 'feof': impossibile convertire il parametro 1 da 'const char [12]' a 'FILE *'
1> I tipi a cui si punta sono privi di relazioni. La conversione richiede reinterpret_cast, cast di tipo C o cast di tipo funzione
1>c:\documents and settings\utente\documenti\visual studio 2008\projects\project1\file new\file new\file new.cpp(47) : fatal error C1903: impossibile recuperare l'errore o gli errori precedenti. Interruzione della compilazione
1>Il log di compilazione è stato salvato in 'file://c:\Documents and Settings\Utente\Documenti\Visual Studio 2008\Projects\Project1\file new\file new\Debug\BuildLog.htm'
1>file new - 7 errore/i, 1 avviso/i
========== Compilazione: 0 completate, 1 non riuscite,
tanto per cominciare, fopen e fclose sono due funzioni, quindi mi spieghi perché le hai messe tra le variabili?
Oltretutto una variabile scritta con due tonde alla fine non esiste da nessuna parte quindi è evidente che non hai capito niente su come si dichiara una variabile.
poi se la funzione registra la scrivi dopo il main ne devi mettere il prototipo PRIMA del main
Diciamo ch il codice era quasi tutto sbagliato.
Adesso ti appiccico il codice sorgente modificato con qualche commento che ti indica grosso modo gli errori, e dato che ormai è tardi in un altro momento ti scrivo in maniera più dettagliata gli errori che hai commesso.
Codice sorgente - presumibilmente C++
#include <stdio.h>
#include <string.h>
#include <iostream>
usingnamespace std;
struct merce
{
char descrizione[40];// In C una stringa non è altro che un array di caratteri
int prezzo;// e va dichiarato come char dato che string non esiste
};
merce articolo;
void registra(FILE*pointer);//Se vuoi sviluppare le tue funzioni dopo il main
void stampa(FILE*pointer);//prima devi almeno dichiarare il loro prototipo
int main()
{
FILE*fp;//fopen() e fclose() sono funzioni e non puntatori
fp=fopen("listino.txt","w");
registra(fp);
fclose(fp);//int fclose(FILE *stream) -> il paramatero da passare è il puntatore fp
fp=fopen("listino.txt","r");
stampa(fp);
fclose(fp);//int fclose(FILE *stream) -> il paramatero da passare è il puntatore fp
system("pause");
return0;
}
void registra(FILE*pointer)
{
int risp;
do
{
system("cls");
cout<<"Inserisci descrizione: ";
scanf("%s",articolo.descrizione);//Meglio non usare gets() ma scanf()
cout<<"Inserisci prezzo: ";
cin>>(articolo.prezzo);
fwrite(&articolo,sizeof(merce),1,pointer);
cout<<"Elenco finito?\n(0)NO\n(1)SI\nScelta: ";
cin>>risp;
}
while(risp==0);//Tutti i cicli in C girano solo se la condizione è Vera