Newsgroup: it.comp.lang.c
Titolo: aiuto nel compilare un'applicazione.c

Ciao a tutti, ho scritto un applicazione.c che interfaccia con il mio
db mysql....
nel momento della compilazione del file oggetto ricevo questi errori
sapete aiutarmi..(posto anche il codice)
#include <stdio.h>
#include <string.h>
#include "/usr/local/mysql/include/mysql.h"
int main() {
	int i, scelta, quantità;
	char query[300], Quantità[5000], Id_magazzino[2], Id_tipologia[15],
Id_lamiera[4],Id_dimensioni[15];
	MYSQL *conn;			/* Connessione */
	MYSQL_RES *result;		/* Risultato della query */
	MYSQL_ROW row;			/* Singolo record della query */
	while ( 1 )
    {
	printf
( "\n*****************************************************************
\n" );
	printf( "****   Client_SQL for database MAGAZZINO Lamiera - Version
1.0 ****\n" );
	printf( "****   Author: Matteo Aluigi - 2009
****\n" );
    	printf( "****   Course:
DBMS                                          ****\n" );
    	printf
( "*****************************************************************
\n" );
    	printf
( "*                                                               *
\n" );
    	printf( "*                 SCEGLI
OPERAZIONE                             *\n" );
    	printf
( "*                                                               *
\n" );
    	printf( "*  1 - Inserisci codice
lamiera                                 *\n" );
   	printf( "*  2 - Inserisci la tipologia della
lamiera                     *\n" );
   	printf( "*  3 - Inserisci dimensioni della
lamiera                       *\n" );
    	printf( "*  4 - Inserisci il magazzino con la
lamiera                    *\n" );
    	printf( "*  5 - Visualizza lo stato dei magazzini		         *
\n" );
	printf
( "*                                                               *
\n" );
    	printf
( "*****************************************************************
\n" );
    	printf( "Digita il numero dell'operazione da eseguire: " );
    	do
    	{
      		scanf( "%d", & scelta );
	}
	while ( scelta < 0 || scelta > 5 );
    	if (scelta == 1)
    	{
	/* Creiamo la connessione */
	conn = mysql_init(NULL);
	if (mysql_real_connect(conn, "localhost", "root", "yoghi87",
"Progetto_Magazzino", 3306, "/tmp/mysql.sock", 0) == NULL) {
		fprintf(stderr, "Spiacente, nessuna connessione al Database...\n");	/
* Messaggio di errore */
		mysql_close(conn);
		return(1); }
	printf("Inserisci il codice rappresentativo della lamiera (max 4
caratteri): ");
	scanf("%s\n", &Id_lamiera);
	strcpy(query, "Insert into Lamiera values ('");
	strcat(query, Id_lamiera);
	strcat(query, "');");
	mysql_query(conn, query);							/* Inoltra una query al server Mysql
*/
	mysql_close(conn);
	return(0);
	}
	else if(scelta == 2)
	{
	/* Creiamo la connessione */
	conn = mysql_init(NULL);
	if (mysql_real_connect(conn, "localhost", "****", "*****",
"Progetto_Magazzino", 0, "/tmp/mysql.sock", 0) == NULL) {
		fprintf(stderr, "Spiacente, nessuna connessione al Database...\n");	/
* Messaggio di errore */
		mysql_close(conn);
		return(1); }
	printf("Inserisci la tipologia della lamiera (max 15 caratteri),
seguida dal codice della lamiera di riferimento(max 4 caratteri): ");
	scanf("%s %s", &Id_tipologia, &Id_lamiera);
	strcpy(query, "Insert into Tipologia values('");
	strcat(query, Id_tipologia);
	strcat(query, "', '");
	strcat(query, Id_lamiera);
	strcat(query, "');");
	mysql_query(conn, query);							/* Inoltra una query al server Mysql
*/
	mysql_close(conn);
	return(0);
	}
	else if(scelta == 3);
	{
	/* Creiamo la connessione */
	conn = mysql_init(NULL);
	if (mysql_real_connect(conn, "localhost", "root", "yoghi87",
"Progetto_Magazzino", 3306, "/tmp/mysql.sock", 0) == NULL) {
		fprintf(stderr, "Spiacente, nessuna connessione al Database...\n");	/
* Messaggio di errore */
		mysql_close(conn);
		return(1); }
	printf("Inserisci le dimensioni della lamiera (max 15 caratteri),
seguida dal codice della lamiera di riferimento(max 4 caratteri): ");
	scanf("%s %s", &Id_dimensioni, &Id_lamiera);
	strcpy(query, "Insert into Dimensioni values ('");
	strcat(query, Id_dimensioni);
	strcat(query, "', '");
	strcat(query, Id_lamiera);
	strcat(query, "');");
	mysql_query(conn, query);							/* Inoltra una query al server Mysql
*/
	mysql_close(conn);
	return(0);
	}
	else if(scelta == 4);
	{
	/* Creiamo la connessione */
	conn = mysql_init(NULL);
	if (mysql_real_connect(conn, "localhost", "root", "yoghi87",
"Progetto_Magazzino", 3306, "/tmp/mysql.sock", 0) == NULL) {
		fprintf(stderr, "Spiacente, nessuna connessione al Database...\n");	/
* Messaggio di errore */
		mysql_close(conn);
		return(1); }
	printf("Inserisci il codice del magazzino (max 2 caratteri), quantità
e codice di lamiera: ");
	scanf("%s %d %s", &Id_magazzino, &quantità, &Id_lamiera);
	itoa(quantità, Quantità, 10);
	strcpy(query, "Insert into Magazzino values ('");
	strcat(query, Id_magazzino);
	strcat(query, "', '");
	strcat(query, Quantità);
	strcat(query, "', '");
	strcat(query, Id_lamiera);
	strcat(query, "');");
	mysql_query(conn, query);							/* Inoltra una query al server Mysql
*/
	mysql_close(conn);
	return(0);
	}
	else if(scelta == 5);
	{
	/* Creiamo la connessione */
	conn = mysql_init(NULL);
	if (mysql_real_connect(conn, "localhost", "root", "yoghi87",
"Progetto_Magazzino", 3306, "/tmp/mysql.sock", 0) == NULL) {
		fprintf(stderr, "Spiacente, nessuna connessione al Database...\n");	/
* Messaggio di errore */
		mysql_close(conn);
		return(1); }
	strcpy(query, "select Magazzino.Id_magazzino, Magazzino.Id_lamiera,
Dimensioni.Id_dimensioni, Tipologia.Id_tipologia from Magazzino,
Dimensioni, Tipologia where (Magazzino.Id_lamiera =
Dimensioni.Id_lamiera and Magazzino.Id_lamiera =
Tipologia.Id_lamiera);");
	mysql_query(conn, query);
	result = mysql_use_result(conn);
	while((row = mysql_fetch_row(result)))
	{
		printf("Id_magazzino: %s Id_lamiera: %s Id_dimensioni: %s
Id_tipologia: %s ", row[0], row[1], row[2], row[3]);
	}
	mysql_close (conn);
	return(0);
	}
   }
return(0);
}
GLI ERRORI:
matteo@matteo-laptop:~/Scrivania$ gcc -c -I/usr/local/mysql
Applicazione.c
Applicazione.c: In function ‘main’:
Applicazione.c:7: error: stray ‘\303’ in program
Applicazione.c:7: error: stray ‘\240’ in program
Applicazione.c:8: error: stray ‘\303’ in program
Applicazione.c:8: error: stray ‘\240’ in program
Applicazione.c:47: warning: format ‘%s’ expects type ‘char *’, but
argument 2 has type ‘char (*)[4]’
Applicazione.c:66: warning: format ‘%s’ expects type ‘char *’, but
argument 2 has type ‘char (*)[15]’
Applicazione.c:66: warning: format ‘%s’ expects type ‘char *’, but
argument 3 has type ‘char (*)[4]’
Applicazione.c:87: warning: format ‘%s’ expects type ‘char *’, but
argument 2 has type ‘char (*)[15]’
Applicazione.c:87: warning: format ‘%s’ expects type ‘char *’, but
argument 3 has type ‘char (*)[4]’
Applicazione.c:99: error: ‘else’ without a previous ‘if’
Applicazione.c:108: error: stray ‘\303’ in program
Applicazione.c:108: error: stray ‘\240’ in program
Applicazione.c:108: warning: format ‘%s’ expects type ‘char *’, but
argument 2 has type ‘char (*)[2]’
Applicazione.c:108: warning: format ‘%s’ expects type ‘char *’, but
argument 4 has type ‘char (*)[4]’
Applicazione.c:109: error: stray ‘\303’ in program
Applicazione.c:109: error: stray ‘\240’ in program
Applicazione.c:109: error: stray ‘\303’ in program
Applicazione.c:109: error: stray ‘\240’ in program
Applicazione.c:113: error: stray ‘\303’ in program
Applicazione.c:113: error: stray ‘\240’ in program
Applicazione.c:123: error: ‘else’ without a previous ‘if’


NB non fate caso al menu con le printf...

         {
Qui hai: Applicazione.c:99: error: ‘else’ without a previous ‘if’
Questo else non corrisponde a nessun 'if': verifica sempre che
l'istruzione if sia scritta come
if (cond)
  istr1;
else
  istr2;
e non come
if (cond)
  istr1;
  istr2;
else
  istr3;
Gli altri errori sono tutti uguali a questi quindi dovresti riuscire
a sistemarli senza problemi.
ciao
Giacomo

On 26 Mag, 11:54, Giacomo Degli Esposti

Ciao inanzitutto scusa per non aver scritto il num. di righe, poi
Grazie mi sei stato di aiuto ho risolto tutto!!!!


Altro problema.... la compilazione per il file oggetto va bene: gcc -c
-I/usr/local/mysql applicazione.c
però quando faccio la seconda compilazione: gcc -g -o applicazione
applicazione.o -L/usr/local/mysql/lib -lmysqlclient -lz
Mi restituisce questo errore:
Applicazione.o: In function `main':
Applicazione.c:(.text+0x65e): undefined reference to `itoa'
collect2: ld returned 1 exit status
Non ho capito cos'è???

 Non ho capito cos'è???
E' un errore in fase di link. In pratica ti dice che nei tuoi file
stai usando una funzione itoa che non riesce a ritrovare nella
libreria standard.
Hai due alternative: o gli dici di linkare anche la libreria in cui
c'e' questa funzione oppure cerchi di replicarne il comportamento
usando funzioni standard.
Dal nome itoa() deduco che faccia il contrario di atoi(), in questo
caso puoi usare sprintf() per fare la conversione da intero a char.
ciao
Giacomo

On 26 Mag, 12:30, Giacomo Degli Esposti

Grazie
risolto con sprintf....

 - Mostra testo citato -
i problemi non finiscono.... sapete dirmi come impostare bene
graficamente il risulatato della operazione n. 5 che quando la faccio
mi dà i risultati tutti in fila senza distinzioni con le colonne

 mi dà i risultati tutti in fila senza distinzioni con le colonne
Guarda sul tuo manuale la spiegazione sulla stringa di formato di
printf,
ti consente di allineare il testo in diversi modi: ad esempio se
invece di %s metti %20s la stringa viene allineata aggiungendo spazi
fino a 20 caratteri.
ciao
Giacomo