Help C, funzione dentro funzione!

3 risposte [Ultimo messaggio]
Ritratto di triko
triko
(Newbie)
Offline
Newbie
Iscritto: 25/09/2013
Messaggi: 4

Ciao a tutti! Ho il seguente problema che non capisco da cosa sia dovuto!!!
Posto il codice

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define nBks 2
 
typedef struct list_book
{   
	char name [50];
	char title [50];
	int year;
	int price;
	int lent; /*Prestito*/
 
}number;
 
	number book[nBks];
 
int addElementsArray (int nStruct)
{
	int i = 0;
	for (i; i < nStruct; i++)
	{
		fillStruct(book, i);
	}	
}
 
void printArray ()
{
 
}
 
int fillStruct(struct list_book *book, int n)
{
    printf("Inserire nome autore: \n");
	scanf("%s", book[n].name);
	printf("Inserire titolo (int): \n");
	scanf("%s", book[n].title);
	printf("Inserire anno: \n");
	scanf("%i", &book[n].year);
	printf("Inserire prezzo: \n");
	scanf("%i", &book[n].price);
	printf("Inserire prestito: \n");
	scanf("%i", &book[n].lent);
}
 
void print(struct list_book *book, int n)
{
	printf("%s, %s, %i, %i, %i\n", book[n].name, book[n].title, book[n].year, book[n].price, book[n].lent);
}
 
int main()
{
	int a = 2;
	/*printf("Quanti libri inserire di fila? (MAX 4500): ");
	scanf("%i", &a);*/
	addElementsArray (a);	
	/*print(book, n);*/
	return 0;
}

Mi da errore quando chiamando addElementiArray, chiamo fillStruct: "[Error] 'fillStruct' was not declared in this scope"
Qualcuno ha idea di cosa sia?!?!?

Ritratto di wal7er
wal7er
(Guru)
Offline
Guru
Iscritto: 21/09/2007
Messaggi: 572

facile facile: cambia l'ordine di definizione delle funzioni.
fillStruct deve essere definita prima di addElementsArray.

HP Pavilion dv5-1110el powered by OpenSUSE 13.2 64bit

http://linuxcounter.net/cert/432576.png

Ritratto di spock
spock
(Guru)
Offline
Guru
Iscritto: 03/08/2006
Messaggi: 1198

Credo sia dovuto al fatto, come ti dice il messaggio di errore, che fillStruct non è stao dichiarato ed il compilatore non sa se si tratti di un tipo char, int o float.

Ciao

Ritratto di triko
triko
(Newbie)
Offline
Newbie
Iscritto: 25/09/2013
Messaggi: 4

Grazie è proprio esatto, me lo ero completamente scordato Big Grin