mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: [win, c] stringhe

Ciao a tutti,
come faccio a copiare una stringa in un'altra? Non ricordo qual'è la
funzione esatta.
Ciao e grazie.

 funzione esatta.
char *foo = "blah blah";
char *bar;
bar = strdup(foo);
-- 
David N. Welton
   Consulting: 
http://www.dedasys.com/
Free Software: 
http://people.debian.org/~davidw/
   Apache Tcl: 
http://tcl.apache.org/
     Personal: 
http://www.efn.org/~davidw/

 bar = strdup(foo);
Attenzione: strdup() non e' standard.
-- 
Posted from  [80.105.34.80] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

char *strcpy(char *src, char *dst)

char *strcpy(char *src, char *dst)
Secondo il K&R hai invertito src con dst:
char * strcpy(char *dst, const char *src);
oppure la piu' sicura
char * strncpy(char *dst, const char *src, int dst_size)


non so cosa dice lo standard ma l'help del BC dice questo:
"The target string, dest, might not be null-terminated if the length of
src
is maxlen or more."
quindi ricordarsi di mettere il null al fondo quando si usa strncpy.
ciao
donCiccio

Newsgroup: it.comp.lang.c
Titolo: Quale compilatore

Salve, vorrei un parere riguardo i compilatori C freeware, ne ho
trovati 3:
LCC-Win32
GCC Cygwin
GCC Mingw32
Se qualcuno li ha confrontati puo' dirmi le eventuali differenze
salienti?
Grazie.
F.B.
* Sent from RemarQ 
http://www.remarq.com
 The Internet's Discussion Network *
The fastest and easiest way to search and participate in Usenet - Free!

Io non li ho provati personalmente, ma se cerchi un compilatore C/C++
veramente valido punta sul DJGPP compilatore 32 bit freeware molto
funzionale ottima portabilità
Lo trovi su 
www.delorie.com
per scaricarlo in maniera facile e completa cerca il link Zip-Picker
--
]------------------------------------------------------------[
  Esposito Raffaele (>:-[, Alucard Espo C)
 
trun...@libero.it
  ICQ= #74621708
  Talk-Talk= alucard82
  C6= kranio82
]------------------------------------------------------------[
" Non è morto ciò che in eterno può attendere.
   E con il volgere dei millenni anche la morte può morire."
                                 Necronomicon
fuzzy_buddy <fuzzyN...@ciaoweb.it.invalid> wrote in message
0cb7b8bc...@usw-ex0106-047.remarq.com...


Prova il DJGPP penso sia il migliore nel suo genere lo trovi al sito
www.delorie.com
cerca il link zip_picker per scaricare correttamente tutte le parti che lo
compongono
--
]------------------------------------------------------------[
  Esposito Raffaele (>:-[, Alucard Espo C)
 
trun...@libero.it
  ICQ= #74621708
  Talk-Talk= alucard82
  C6= kranio82
]------------------------------------------------------------[
" Non č morto ciň che in eterno puň attendere.
   E con il volgere dei millenni anche la morte puň morire."

Newsgroup: it.comp.lang.c
Titolo: Int main o main?

Salve ragazzi, qualcuno saprebbe dirmi quale differenza c'è, se il main, lo
dichiaro come int main e quindi alla fine deve tornare un valore intero,
oppure lo dichiaro main, senza nessun tipo di ritorno? Mi chiedevo che
differenza ci fosse, visto che funziona in entrambe le maniere.
-- 
ICQ # 84624356
MSN 
lello...@katamail.com
Yahoo ilpuntatore

 differenza ci fosse, visto che funziona in entrambe le maniere.
Funzionano con alcuni compilatori.
Un programma conforme allo standard C99 puo` utilizzare solo una di
queste due forme di main:
int main(void)
int main(int, char**)
Nulla vieta ad un compilatore di supportare altre forme, ma il loro
utilizzo rende il programma non conforme e quindi non portabile.
Luca
-- 
Home: 
http://kronoz.cjb.net
Sono un mirabile incrocio tra Tarzan e Giacomo Leopardi.
In me convivono tutte le doti intelluttuali di Tarzan e
tutta la prestanza fisica di Giacomo Leopardi.
A. Borsani

 default e` int.
Non secondo lo standard.  Bisogna specificare il tipo di ritorno, che 
nel caso di main è sempre e solo int.


E` ora di fare un bel ripasso!


 E` ora di fare un bel ripasso!
Fallo, allora.


Guarda caso sono proprio andato a guardarmelo sullo standard.
Come al solito sei cosi` presuntuoso che vuoi sempre avere ragione.


 Guarda caso sono proprio andato a guardarmelo sullo standard.
Non e` che stai guardando il C89? Perche` nel C99 l'int implicito e`
stato rimosso (come evidenziato tra l'altro in "Major changes from the
provious edition").
Luca
-- 
Home: 
http://kronoz.cjb.net
Porc i' mond che cio' sott i piedi!
V. Catozzo

 Come al solito sei cosi` presuntuoso che vuoi sempre avere ragione.
Taci, imbecille.

 Guarda caso sono proprio andato a guardarmelo sullo standard.
Non e` che stai guardando il C89? Perche` nel C99 l'int implicito e`
stato rimosso (come evidenziato tra l'altro in "Major changes from the
previous edition").


 Luca
Beh, a dire la verita` ho solo quello.  Ma il compilatore C99 lo accetta 
lo stesso con solo un warning.
Ciao
Giovanni



Quando la smetterai di offendere


 [...]Ma il compilatore C99 lo accetta lo stesso con solo un warning.
Non vuol dire una benemerita cippa.


Ha parlato lo standard C99++


 Ha parlato lo standard C99++
Taci, scemo.  Smettila di rompere le palle.


Quando smetterai di offendere.


Newsgroup: it.comp.lang.c
Titolo: exit() o  return()

salve,
ho win98 ed il dev c++.
quando c'è la possibilità che si verifichi un errore prevedibile dal
programmatore (con le
 malloc, fopen(), passaggio prametri al main), di solito il
programmatore C inserisce una printf("errore").
A volte essa è seguita da exit(1), altre da return(-1).
Ora io chiedo: cosa cambi nei due casi? E' indifferente? Quando è meglio
l'uno al posto
dell'altro?
grazie,
adriano

 Ora io chiedo:
un
manuale
sul
c
hai chiesto questo.

 dell'altro?
exit lo puoi fare da qualunque punto del codice. Il return(-1) potrà 
essere utile allo scopo solo se ti trovi nel main.
E.
Newsgroup: it.comp.lang.c
Titolo: Problemone con rename(char *name) (Post lunghetto)

Salve a tutti scusate la mia ignoranza e la mia stupidità, ma è da alcuni
giorni che continuo a cercare soluzioni ma non capisco il problema.
Ho scritto un programma che dovrebbe leggere un elenco di nomi di file da un
file, li carica in un array, aggiunge un carattere ' ' al nome del file.
Il problema è che rename() mi restituisce un errore negli argomenti passati.
Vi allego sotto il sorgente.
----------------------INIZIO-----------------------
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int rinomina(const char *name);
int elimina(void);
struct escluso
{
 char par[80];
}EleExc[200];
int IndMaxEsclusi;
int main (void)
{
 int m,i;
 char car[1];
 int CntChr;
 FILE *Pfile;
   if ((Pfile=fopen("a:\elencoF.txt","rb"))==0){
    printf("Errore!!!\n");
      exit(1);
      }
 else
  /* Posiziona il puntatore all'inizio del file */
  fseek(Pfile,atol("a:\elencoF.txt"),SEEK_SET);
 m=0;
 /* Ciclo del confronto, termina alla fine del file */
 CntChr=0;
 while (!feof(Pfile))
  {
   car[0]=(char)getc(Pfile);
       if (car[0]!='\n'){
     EleExc[m].par[CntChr]=car[0];
     CntChr++;
    }
       else
        {
                m++;
                CntChr=0;
            };
       IndMaxEsclusi= m;
    };
  for (i=0;i<IndMaxEsclusi;i++){
    rinomina(EleExc[i].par);
    };
  /* elimina();*/
 /* Chiusura del file */
 fclose(Pfile);
 return 0;
}
int rinomina(const char *name)
 {
 const char *Path="a:\\";
 const char *space=" ";
   char tempnew[80];
 char tempold[80];
   strcpy(tempold,Path);
   strcat(tempold,name);
   strcpy(tempnew,Path);
   strcat(tempnew,space);
   strcat(tempnew,name);
   printf("%s\n",tempold);
 printf("byte = %d\n",strlen(tempold));
   printf("%s\n",tempnew);
   printf("byte = %d\n",strlen(tempnew));
   if(rename(tempold,tempnew)==0)
    printf("Esecuzione corretta\n");
   else
    perror("rename");
 return 0;
}
/*int elimina(void)
 {
 char newname[80]={"a:\manuel.txt"};
   if(remove(newname)==0)
    printf("Esecuzione corretta\n");
   else
    perror("remove");
   return;
}
  */
-------------------FINE---------------------
Scusate ancora per la domanda sicuramente banale, ma per imparare devo
scrivere, chiedere e soprattutto capire e siccome non riesco a trovare
soluzione chiedo a Voi esperti.
Qualsiasi critica, aiuto, suggerimento è estremamente ben accetto.
Cordiali saluti.

    printf("byte = %d\n",strlen(tempnew));
prova a mettere "_"
cladig
------------------------------------------------------------------------
Questo messaggio e` stato inviato da 
http://www.inwind.it

 ha scritto nel messaggio
news:996145283643...@inwind.it...


    char oldname[80]={"a:\provadir"};
In C ,C++ devi usare questo modo per indicare lo slash :


 ha scritto nel messaggio
news:3B634675...@libero.it...

Newsgroup: it.comp.lang.c
Titolo: Niubbo: if con piu' di una condizione

 piu' di un termine?
usi gli operatori && (AND),||(OR) ecc. all'interno della parentesi
-- 
Marco

 seguiranno (il libro ha 14 capitoli...)
e noi che pensavamo di sbarazzarci di te con un paio di rispostine :)
ciau diego

 lunedi', martedi' ecc per tutta la settimana).
Prova questo:
#include <stdio.h>
#define GIORNI 7
int main() {
	double totale = 0, swap = 0;
	int i = 0; /* contatore */
	printf ("Scrivere gli etti mangiati, -1 per terminare\n");
	scanf ("%lf", &swap);
	while(swap != -1 && i < GIORNI-1) {
		totale += swap;
		i++;
		scanf ("%lf", &swap);
	}
	printf ("La media e': %.2f\n", totale/i);
	return 0;
}
-- 
Marco

utilizzare solo la  prima?
Uhmm, veramente il codice postato dovrebbe fermarsi appena metti un
-1.
Questo a meno che tu non voglia fare una cosa del tipo:
<CODE>
scanf("%d", &hlun);
scanf("%d", &hmar);
scanf("%d", &hmer);
</CODE>
In questo caso non usi un ciclo (anche perche' sarebbe praticamente
impossibile) e se vuoi che appena si inserisce un -1 si fermi tutto
dovresti ingegnarti con i controlli... che devi fare dopo ogni
inserimento per controllare se il valore immesso prima era un -1 e in
tal caso attivarsi per proseguire oltre la funzione di lettura dei
valori da input.
Se vuoi un modo ci si puo' ingegnare, ma secondo me e' piu' facile se
ti reingegnerizzi il tuo piccolo file.
Anziche' immagazzinare i dati in 7 variabili, pensa come sarebbe se
usassi un array di 7 slot e come potresti inserire i valori man mano
nella posizione giusta usando solo un indice e un unico ciclo (quindi
facilmente interrompibile appena leggi un -1).
Se non ti viene in mente ti mando una bozza.
Mox :)
Newsgroup: it.comp.lang.c
Titolo: separare le stringhe dal tabulatore

devo aprire un file e con la fgets mi devo memorizzare in quattro buffer
quattro gruppi di parole che sono separati tra di loro da il carattere '\t';
es:
prima parola    seconda parola    terza parola    quarta parola
accetto consigli sul come fare...
io penso che mi converrebbe dividere la riga in quattro stringhe divise dal
tab, ma potrebbe non esser l'idea giusta, anche perche' l'ho provata ma con
esiti negativi
grazie in anticipo per ogni consiglio sul come fare

 ha scritto nel messaggio
news:9ek2d3$ivb$1...@lacerta.tiscalinet.it...

e con fscanf?
fscanf( file,"%[ -~]\t%[ -~]\t%[ -~]\t%[ -~]",b1,b2,b3,b4 );
con fgets potresti fare +o- cosi':
char line[256];
fgets( line,sizeof( line ),file );
strcpy( b1,strtok( line,"\t" ) );
strcpy( b2,strtok( NULL,"\t" ) );
strcpy( b3,strtok( NULL,"\t" ) );
strcpy( b4,strtok( NULL,"\t" ) );
ciao
donCiccio

fscanf( file,"%[ -~]\t%[ -~]\t%[ -~]\t%[ -~]",b1,b2,b3,b4 );
e se ad esempio nella seconda stringa e' presente il carattere ascii 200?
non sarebbe piu' sicura una roba del tipo:
fscanf(file, "%[^\t]\t%[^\t]\t%[^\t]\t%[^\t]\t", b1,b2,b3,b4);
non finiro' mai di stupirmi di quanto potente e subdola possa essere la
scanf... e di quanto criptica possa essere la sua sintassi.
buona scanf a tutti
bepin

 e se ad esempio nella seconda stringa e' presente il carattere ascii 200?
intendi un carattere non ascii >127, tipo lettere accentate?
bhe, ancora una volta, hai ragione!
ciao
donCiccio

fscanf(file, "%[^\t]\t%[^\t]\t%[^\t]\t%[^\t]\t", b1,b2,b3,b4);
mi autocorreggo, sebbene la precedente mi pare funzioni, dato che le
stringhe sono 4 ma i tab che le separano sono 3 (ovvero non c'e' il tab alla
fine dell'ultima stringa), penso sia piu' corretta la seguente:
fscanf(file, "%[^\t]\t%[^\t]\t%[^\t]\t%s", b1,b2,b3,b4);
bunoa giornata a tutti
bepin
Newsgroup: it.comp.lang.c
Titolo: Altre due cose

funzioni o sim. che permettano di farlo). Tnx.
atoi()
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
--------------------------------------------------------------
"Partire e' un po' morire e morire e' partire un po' troppo !"
--------------------------------------------------------------

> <snip> 1) Come si svuota il buffer della tastiera <snip>
In ANSI non c'e' il modo, pero' molti (tutti?) compilatori ti
forniscono librerie per accedere all'hardware.
Nel tuo caso, prendendo come esempio il BCC 5.02, potresti fare:
#include <conio.h>
void SvuotaBufferTastiera(void){
  while(kbhit())
    (void)getch();
}
Dove kbhit() != 0 se c'e' un carattere nel buffer di tastiera,
e getch() prende un carattere dal buffer tastiera e ritorna subito,
senza aspettare il '\n', come invece normalmente fa la getc().
Guardati l'help del tuo compilatore, due funzioni simili dovrebbero,
con buona probabilita', esserci.
Bye, Andrea
-- 
 _     /°#     ----------------+-------------------------
°  \  /        Andrea          | arimicci @@
   |++~|            Rimicci    |         aritaly. com
    \ /  --------- OS/2 V5 "Phoenix" --------------------
     |   The MIDI JukeBox:
    _|_                  
http://www.aritaly.com/eng/midi/
---------------------------------------------------------

 funzioni o sim. che permettano di farlo). Tnx.
atoi(); sei il numero è intero
atof(); se è float...
Ciiips
Enrico S.

 Puoi provare con fflush(stdin); (che però svuota tutti  i flussi)
Questo ha un comportamento non definito, ossia potrebbe fare quello
che ti serve, come potrebbe fare qualsiasi altra cosa...
--
 Ciao, Bianco.
 Reply to 
luca....@tiscalinet.it

Puoi provare con fflush(stdin); (che però svuota tutti  i flussi)
No.
fflush() ha comportamento definito solo per lo standard output.
Tra l'altro, anche se avesse un comportamento definito per stdin, non
comporterebbe affatto lo svuotamento di tutti i flussi che, nel caso
dell'output, si ottiene passando NULL come parametro.

Newsgroup: it.comp.lang.c
Titolo: Ciclo!

Scusate, mi sapete dire perchč non esce mai dal ciclo?
Non riesco a capire, forse č anche semplice ma...
Ecco l'algoritmo:
#include <stdio.h>
#include <conio.h>
void main(void)
{
    char valore[2];
    clrscr();
    do
    {  printf("Inserisci un valore: ");
       gets(valore);
    }
    while (valore != "si");
    printf("\n\nSei uscito dal ciclo!!!Ciao!!!");
    getch();
}
--
Eliminare NOSPAM dall'indirizzo per rispondere in e-mail.
GRAZIE.

 a capire, forse è anche semplice ma...
  Le stringhe in C non sono oggetti di tipo scalare ma vettori di
caratteri, pertanto l'operatore '!=' non e` definito sul loro insieme.
Devi usare, piuttosto, una funzione, come per esempio strcmp(3), il cui
uso e` ampiamente documentato sulla manualistica a disposizione con il
compilatore.
	Alla prossima,
		Marco

     while (valore != "si");
Arghhh! Num se po' fa'!! Per comparare le stringe devi usare una
funzione apposita:
while (strcmp(valore,"si"));
[...]
-- 
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it
 UIN : 43385135

 GRAZIE.
Perché per confrontare due stringhe devi usare la funzione strcmp
presente nella libreria string.h (occorre quindi che tu includa l'header
string.h) che ha la seguente sintassi:
int strcmp(stringa1,stringa2,) che restituisce un valore>0 se
stringa1>stringa2, 0 se sono uguali e un valore<0 se....indovina?
Usa int main () e non void main(void) (non é nello stantard ansi).
Inoltre scrivi char valore[3]....dimentichi il terminatore di stringa.
ciao

    while (valore != "si");
In virtù di quanto detto precedentemente, l'operatore != non è
applicabile a valore.
Esiste una regola in C per cui il nome di un vettore, generalmente (ci
sono tre casi particolari in cui non accade), decade nel puntatore al
suo primo elemento. Ciò significa che il confronto, in questo caso,
diventa quello tra il valore del "puntatore" valore e il valore del
puntatore a caratteri costanti "si" che, presumibilmente, sarà sempre
diverso, evitando sempre la fine del ciclo.
--------------------------------------------------------
* Andrea Laforgia        (
andrea_...@bigfoot.com
) *
--------------------------------------------------------

     while (valore != "si");
Non puoi fare un confronto tra due puntatori che in questo caso sono sempre
differenti (valore e "si" occupano due locazioni di memoria differenti),
devi usare una funzione per la comparazione delle stringhe.
Prova a mettere
while (strcmp(valore, "si"));
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
ICQ: 42227764
---------------------------------------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: Urgente aiuto C# .net su DataGrid

Scusate il disturbo ragazzi ma non esiste un gruppo apposito. Ho bisogno
urgente del vostro aiuto.
Per necessità lavorative ho bisogno di poter suddividere l'HEADER di una
DataGrid su piu' colonne simulando quello che viene fatto mediante il
COLSPAN ed il ROWSPAN in HTML su una tabella [ma questa e' una applicazione
RUNTIME non web] utilizzando C# con .NET 2003.
cioe' devo ottenere un effetto simile a questo:
------------------------------------------------------------
| nominativo | |
|----------------------------- indirizzo |
| nome | cognome | |
------------------------------------------------------------
| piggy | palla | casa mia |
| pinco | pallino | casa sua |
| | | |
i dati vengono presi tramite binding su un dataset.
Ho provato a giocare gli con gli stili del datagrid, ma la cosa puo' essere
fatta solo per applicativi WEB mentre non sono riuscito a trovare
assolutamente nulla al riguardo per applicativi runtime [mentre sono
riuscito a personalizzare i dati nelle colonne inserendo ceckbox o
inputbox!].
L'unica idea che mi viene in mente e' quella di creare uno user control con
una picturebox + una datagrid. la datagrid verrà visualizzata senza header,
il quale invece verrà creato manualmente nella picturebox. Intercettando il
click sullo scroll orizzontale della griglia si ridisegna oppurtunamente la
pciturebox simulando l'intestazione e l'header.
Prima di proseguire su una strada cosi' articolata vi chiedo se esiste un
modo piu' semplice per risolvere il problema! [codici di esempio o link al
riguardo sono graditissimi]
Ho visto che vengono vendute DataGrid estese che possono essere
personalizzate in questo modo!
Grazie a tutti in anticipo!
PG
--------------------------------
Inviato via 
http://usenet.libero.it

 urgente del vostro aiuto.
e la gerarchia microsoft.public.it.dotnet.* a cosa è riservata?

 urgente del vostro aiuto.
microsoft.public.it.dotnet.*
se non l'hai sul tuo newserver puoi usare 
news.microsoft.com
oppure usa il gateway che c'e` sul sito della MS
-- 
Lawrence "Rhymes" Oluyede
http://loluyede.blogspot.com
rhy...@NOSPAMmyself.com
Newsgroup: it.comp.lang.c
Titolo: Apertura file binario

Ho bisogno di scrivere un programma che apra un file binario molto grande
circa 471698303 offset byte.Io vorrei stampare a video solamente i caratteri
che si trovano tra l'offset 1928884 e l'offset 1928914.So che devo usare i
segnaposto ma non riesco a capire come.Se c'è qualcuno che ha la pazienza di
spiegarmelo lo ringrazio molto.
Peo

 ha scritto nel messaggio
news:a3b11r$uog$1...@pegasus.tiscalinet.it...

Cerca su un manuale/guida/google fseek
Ciao
--
Timothy Redaelli

 che si trovano tra l'offset 1928884 e l'offset 1928914.
/* Buffer */
char buff[1928914 - 1928884];
/* Caratteri da leggere */
long len = 1928914 - 1928884;
/* Mi sposto al byte 1928884 */
fseek(file, 1928884, SEEK_SET);
/* Leggo il blocco */
fread(buff, len, 1, file);
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Il coraggio non mi manca.
E` la paura che mi frega...

 ha scritto nel messaggio
news:a3bed9$2o2$1...@dreamland.darkstar.net...

Ho funziona alla grande c'ero arrivato anche io ma se devo dire la verità
non capivo bene il meccanismo.
Grazie mille
Peo
Newsgroup: it.comp.lang.c
Titolo: MySQL C API

Ho trovato un mini-tutorial qui:
http://rsynnott.f2g.net/mysql.html
Mi sono scaricato il file mysqldemo.c (trovate il link in fondo alla pagina)
ed ho provato a compilarlo con la riga di comando suggerita dall'autore ma
ottengo il seguente messaggio:
/tmp/ccz0dOXs.o(.text+0x45): In function `main':
: undefined reference to `mysql_connect'
collect2: ld returned 1 exit status
Che problema posso avere?
Uso Mandrake 9.1 con gcc 3.2.2 e questi sono i files presenti nelle
directory coinvolte:
$ ls  /usr/include/mysql
chardefs.h  m_string.h   my_net.h         mysql_embed.h    sslopt-case.h
dbug.h      my_alloc.h   my_no_pthread.h  mysql.h          sslopt-longopts.h
errmsg.h    my_config.h  my_pthread.h     mysql_version.h  sslopt-vars.h
history.h   my_getopt.h  my_semaphore.h   my_sys.h         tilde.h
keymaps.h   my_global.h  mysql_com.h      raid.h
m_ctype.h   my_list.h    mysqld_error.h   readline.h
$ ls /usr/lib/mysql
libdbug.a   libmyisam.a       libmysqlclient_r.a  libnisam.a
libheap.a   libmyisammrg.a    libmystrings.a      libvio.a
libmerge.a  libmysqlclient.a  libmysys.a          mysqld.sym
$ ls /usr/lib/libmy*
/usr/lib/libmysqlclient.a      /usr/lib/libmysqlclient_r.so.12@
/usr/lib/
libmysqlclient.la
*    /usr/lib/libmysqlclient_r.so.12.0.0*
/usr/lib/libmysqlclient_r.a    /usr/lib/libmysqlclient.so@
/usr/lib/
libmysqlclient_r.la
*  /usr/lib/libmysqlclient.so.12@
/usr/lib/libmysqlclient_r.so@  /usr/lib/libmysqlclient.so.12.0.0*
Alex Ambro

 Che problema posso avere?
devi linkare la libreria con l'opzione -l ... non so precisamente per mysql,
ma se leggi un po' di documentazione trovi il nome della libreria da linkare ..
$ cc -o prova mysqldemo.c -lmysql
ipotizzando che la libreria si chiami libmysql.so ..
ciao ...
-- 
#include <stdio.h>
int main(void){char c[]={10,65,110,116,111,110,105,111,32,98,97,114,98,111,110,
101,32,60,104,105,110,100,101,109,105,116,64,116,105,115,99,97,108,105,110,101,
116,46,105,116,62,10,10,0};printf("%s",c);return 0;}

 writes:
  AA> Ho trovato un mini-tutorial qui:
  AA> 
http://rsynnott.f2g.net/mysql.html
  AA> Mi sono scaricato il file mysqldemo.c (trovate il link in fondo
  AA> alla pagina) ed ho provato a compilarlo con la riga di comando
  AA> suggerita dall'autore ma ottengo il seguente messaggio:
  AA> /tmp/ccz0dOXs.o(.text+0x45): In function `main': : undefined
  AA> reference to `mysql_connect' collect2: ld returned 1 exit status
Il tuo messaggio qui e` fuori argomento. Qui si discute del C definito
dalla standard ANSI.
Il tuo e` un problema legato allo sviluppo di mysql in ambiente
GNU/Linux, pertanto sarebbe piu` indicato postare su
it.compo.os.linux.development .
Visto che ci siamo, ti dico che l'errore proviene piu` specificamente
dal linker, quindi c'e` buona probalita` che il comando utilizzato per
compilare non sia quello esatto. Dovresti specificare un'opzione
-lmysqlqualcosa per indicare di effettuare il linking con la libreria
mysqlqualcosa (mysqlclient, se ho capito bene).
Ciao,
nico
Newsgroup: it.comp.lang.c
Titolo: [soluzione(?)] scrittura file in C++ lettura in C

ho risolto cosě ma mi sembra una gran puzzonata, che ne dite?
scritto in un programma C++ cosě:
 int sizeofstate = DIMENSIONESTATO;
 output->write ( (char *) &sizeofstate , sizeof(int) );
letto dal programma scritto in C cosě:
 int *Pdimstate,dimstate;
 char prova[4];
 fscanf(filectrl,"%c",&prova[0]);
 fscanf(filectrl,"%c",&prova[1]);
 fscanf(filectrl,"%c",&prova[2]);
 fscanf(filectrl,"%c",&prova[3]);
 Pdimstate=(int *) prova;
 dimstate=*Pdimstate;
ciao!
-- 
__________________________________
"Ama e fai c'ho che vuoi".... 
__________________________________

 
mi correggo con un bel
 fread(&i,sizeof(int),1,filectrl);
scusate...ma la documentazione riepte spesso le stesse cose e io ignoravo 
(ma sospettavo) l'esistenza di una funzione del genere.

Newsgroup: it.comp.lang.c
Titolo: Info su libro

Ciao a tutti.
Sapete se esiste un buon libro/i in formato elettronico base e/o avanzato
sul c? Ad esempio tipo Thinking in C++ di Bruce eckel?
Grazie.
Cristian Mudadu

 Grazie.
Sullo standard C non credo esista qualcosa di veramente valido: puoi tentare
con 
www.hyperbook.it
 ma andare in libreria è una scelta decisamente migliore.
Nicholas
-- 
Slackware 8.1 - 2.4.19 - GCC version 2.95.3
Newsgroup: it.comp.lang.c
Titolo: Convertire intero in stringa

Ciao!
Esiste una funzione della libreria standard per convertire un (int) in un 
(char *) ?
Ho trovato altre conversioni ma non quella...
Grazie
-Davide-



itoa
stdlib.h



sprintf( stringa, "%d", intero);
Ciao
Matic
____________________________________
.. in a wolrd far away we may  meet again ..

Newsgroup: it.comp.lang.c
Titolo: Funzione fork() cercasi!

Ciao a tutti,
sto disperatamente cercando la funzione fork, quella per la gestione dei
processi, non trovandola nel mio Borland C di 'anta anni fa.
Se qualcuno sa dove posso trovarla e' ben accetto ogni aiuto!
Ciao		
				Gioele
-- 
gstr...@tiscalinet.it

Spero di non sbagliare,
ma credo proprio che la funzione fork sia una caratteristica dell'
ambiente unix e quindi in un ambiente di programmazione su windows
recente o passato che sia non ci sara' mai.
Saluti, Andrea.


 recente o passato che sia non ci sara' mai.
Sai, pensandoci bene credo proprio che hai ragione... :)

 
gstr...@tiscalinet.it
fork() e' una SYSTEM CALL dei sistemi operativi unix like,
windows non la puo' avere (se non simulata da altro).
Non so pero' come si faccia sotto windows la gestione
di piu' processi (non so neanche se e' possibile).
-- 
Zack
Stefano Zacchiroli
zacc...@cs.unibo.it
za...@comune.budrio.bo.it
ICQ# 33538863
"Never understimate the dark side"

 di piu' processi (non so neanche se e' possibile).
In Win32 è possibile creare un nuovo processo tramite l'API "CreateProcess()"
o equivalenti, la differenza è che non puoi condividere il codice come fai con
la fork() di UNIX. Esiste un porting della fork() per Win32 fatto dalla
Cygnus. Per maggiori dettagli:
http://sourceware.cygnus.com/cygwin/
Raffaele.

> Sai, pensandoci bene credo proprio che hai ragione... :)
puoi usare i thread sotto doze, anch'essi ti consnetono di eseguire +
processi contemporaneamente.
tra l'altro sarebbe meglio usare i thread anche sotto linuz, non buttare
via 50-70 cicli di CK a ogni switch di processo :\\
BYe.
Newsgroup: it.comp.lang.c
Titolo: problema :-(

in un mio programma c'è un file che si aggiorna , e qualche riga di
codice sotto il programma sfrutta questo file aggiornato;
ma prima che il suddetto file si aggiorni devo aspettare che il
programma termina : ( e quindi il tutto non funziona
c'è per caso una funzione che permette al file di aggiornarsi mentre
il programma è ancora in esecuzione ?
magari basta una funzione per svuotare il buffer ?
Thx a coloro che risolveranno il mio problema

 magari basta una funzione per svuotare il buffer ?
Potrebbe essere, prova
fflush()
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Newsgroup: it.comp.lang.c
Titolo: ciao bello

Dove sbaglio in questo ciclo?
for (arg_cnt = 1, i = 0; arg_cnt <= --argc; arg_cnt++) {
                t = argv[arg_cnt];
                while (*t++) {
		       printf("\n*t = %c", *t);
                       s[i++] = 'a';
		}
                s[++i] = ' ';
}
Se metto come argomento, ad esempio, ciao, mi visualizza sta roba:
*t = i
*t = a
*t = o
*t =
Perche'?
Inoltre, se metto un altro argomento, ad esempio scrivo ciao bello, da in
output lo stesso che se mettessi solo un argomento, solo ciao.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

                 while (*t++) {
  testi la non fine e poi incrementi... ovviamente perdi il primo carattere.


>
Ciao
Matic

Grazie a entrambi!!!


Newsgroup: it.comp.lang.c
Titolo: C++ x LinuxKDE, kdevelop o qt ???

Cosa mi consigliate di ulizzare per iniziare a programmare su 
linux kde ???
grazie andrea
-- 
Inviato da Virgilio 
http://newsgroup.virgilio.it
Filtra gli antipatici, segnala le risposte, segue i thread, e lo fa da web

 linux kde ???
Perchè non usare le GTK :) Vai sul sicuro, sono molto portabili, ed il 
tuo programma può essere usato tranquillissimi*mamente anche su non-KDE, 
ad esempio io non ho le QT installate, e penso che eviterò alla grande.
Per C++ c'è il binding delle GTK.
PS: Dovresti postarlo su it.comp.os.linux.development ;)
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Xoen
Jabber ID : 
xo...@jabber.linux.it
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 eviterò alla grande.
La cosa mi interessa moltissimo.
Perchè "eviterò" alla grande??
La main in ambiente Qt presenta all'incirca un:
main(....)
{
QApplication a;
a.show();
..
..
}
Sa tanto di VisualBasic.
Voglio capire, non avere vita facile  :))
Grazie Andrea
p.s. - hai l'opportunità di inviarmi il codice di una 
applicazione elementare (il classico "HELLO WORD") in C  ??
Xoen ha scritto:


Newsgroup: it.comp.lang.c
Titolo: Problema di complessità computazionale

Sto scrivendo un programma in C (per l'esattezza un MEX per Matlab) che
calcola un filtro per elaborazione di immagini molto complesso. In
particolare, il programma deve calcolare un gran numero di moltiplicazioni
in floating-point (double).
Siccome parte delle moltiplicazioni sono per potenze di 2, ho pensato di
velocizzare il programma usando la funzione "ldexp", che per l'appunto
moltiplica un numero floating-point per una potenza di 2 (e quindi in teoria
dovrebbe soltanto modificare l'esponente). Invece il programma così
modificato è notevolmente più lento, e la cosa mi sembra strana visto che
secondo il mio modesto parere moltiplicare due numeri floating-point è più
complesso che sommare due interi.
Le spiegazioni che mi vengono in mente sono le seguenti:
1) Le unità floating-point dei processori (in particolare io uso un Pentium
4) sono talmente efficienti che una moltiplicazione è molto più veloce di
una somma tra interi.
2) I processori non sono in grado modificare l'esponente di un numero
floating-point, per cui tale operazione viene emulata via software.
3) È un baco del compilatore (io uso il compilatore interno di Matlab).
4) Non bisogna usare la funzione "ldexp", ma qualche altra (oppure
programmare in assembler).
Qualcuno sa chiarire l'enigma?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Qualcuno sa chiarire l'enigma?
Non conoscendo i dettagli posso solo fare qualche
considerazione.
Nel computo del tempo bisogna tenere
conto di diversi fattori.
Intanto le moltiplicazioni tra double sono
piuttosto veloci, perche' vengono effettuate
in hardware. Inoltre, essendo operazioni "semplici"
il compilatore e' facilitato nel compito
di allocare i valori nei registri etc.etc.
Invece la ldexp prima ancora di fare quello
che deve fare e' una funzione. Quindi necessita
del codice per il passaggio di due parametri
e il ritorno del risultato. Queste operazioni
non ci sono nella versione precedente, e potrebbero
anche avere brutti effetti sull'uso dei registri.
Per quanto riguarda la funzione ldexp in se non so
quali istruzioni usa, ma tieni conto del fatto
che tipicamente l'esponente binario per un numero
double da 8 byte e' lungo 11 bit. Quindi per farci
delle operazioni aritmetiche sopra bisognera' perdere
un po' di tempo in piu' perche' non e' di una misura
standard (tipo 8,16,32 bit). Magari la funzione ldexp
va anche a fare dei controlli sugli argomenti.
Fra una cosa e un altra puo' benissimo metterci
piu' tempo di una semplice moltiplicazione.
Se il compilatore e' buono e' difficile
riuscire a fare di meglio a mano a meno di
non essere dei veri esperti di assembler.
ciao,
g.
Newsgroup: it.comp.lang.c
Titolo: inversione di una stringa

Ciao a tutti, ho un quesito da porvi in merito a questo programma tratto
da un libro:
#include <stdio.h>
main()
{
   char sentence[80];
   void reverse(char *);
   printf("Enter a line of text:\n");
   gets(sentence);
   printf("\nThe line printed backwards is:\n");
   reverse(sentence);
   printf ("\n");
   return 0;
}
void reverse(char *s)
{
   if (s[0] == '\0')
      return;
   else {
    reverse(&s[1]);}
      putchar(s[0]);
}
All'interno della funzione ricorsiva *reverse* io fornisco i singoli
caratteri del vettore *sentence* alla funzione *putchar*
nel normale ordine in cui li ho digitati sulla tastiera. La condizione
affinchè la funzione termini è che incontri il carattere
NULL '\0' , quindi si può immaginare che il vettore sia esaminato da
sinistra verso destra e passato man a mano a *putchar*
che lo visualizza però solo quando arriva  '\0'  .
Fin qui tutto bene , ma dal momento che io i caratteri glieli ho passati
nel normale ordine perchè me li visualizza in ordine inverso?
Sembrerebbe che la funzione *putchar* immagazzini i caratteri
nell'ordine in cui glieli invio ed una volta trovato il carattere '\0'
da parte della funzione *reverse* me li visualizzi a ritroso, è così? Se
sì per quale motivo si comporta in questa maniera?
Vi ringrazio anticipatamente,
--
Nick Belane
Togli NOSPAM per rispondermi

 }
Quando tu passi a reverse() la stringa sentence questo richiama
immediatamente reverse passando una stringa che inizia un carattere dopo il
normale inizio di sentence. Quando il primo carattere della stringa passate
è '\0' ritorna, quindi putchar inizia a stampare il primo carattere di ogni
stringa passata alla funzione e poiché le funzioni ritornano in ordine
inverso di come sono state chiamate vengono stampati per primi gli ultimi
caratteri della stringa.
Spero di essere stato sufficientemente chiaro anche se spiegare come si
comportano le funzioni ricorsive non è di certo facile.

 ha scritto nel messaggio
news:9c4udj$5od$1...@pegasus.tiscalinet.it...


Newsgroup: it.comp.lang.c
Titolo: Strutture ad albero

Dove posso trovare esempi di programmi per gestire strutture ad albero, pile
e code?

 e code?
Strutture dati in C  
Horowitz Ellis; Sahni Sartaj; Anderson Freed Susan ; 
McGraw-Hill Libri Italia     
&#8364; 36,67
ciao
Newsgroup: it.comp.lang.c
Titolo: MIDI & C - HELP !!!

Dove posso trovare librerie per trattare i MIDIFiles con il linguaggio
C ??? Dove posso reperire info dettagliate su questo formato ???
Grazie.			
uga...@libero.it

prova


www.wosit.org
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
ICQ: 42227764
---------------------------------------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: feof()

qualcuno mi spiega quale byte controlla feof?
guardando questo codice sembrerebbe che legga quello precedente a quello
attuale..
while(1)
{
c=getc(fp);
    if(!feof(fp))
        putc(c,f2);
    else
        break;
}

 attuale..
feof() testa se e' stata raggiunta la condizione
di end-of-file.
LA cosa da ricordare assolutamente (pena lettura
duplice dell'ultimo carattere o dell'ultima riga...)
e' che il sistema setta il flag di eof non dopo
aver letto l'ultimo carattere, ma quando si cerca di
leggere OLTRE l'ultimo carattere.
ciao,
g.

 leggere OLTRE l'ultimo carattere.
quindi EOF in modalità binaria non è un carattere ma una flag data dal s.o.
se il mio programma cerca di leggere oltre la fine di un file. ho capito
bene?

.:'DevarajA':. ha scritto:

Sì: la funzione feof ritorna true quando non c'è più nessun carattere da
leggere. Non esiste nessun "carattere di fine file", se non nella fantasia
di chi ha scritto certi vecchi editor per DOS.
Il valore EOF ritornato da getc() e compagnia non è un codice carattere: è
un'indicazione del fatto che non c'è più niente da leggere (nel qual caso
feof ritorna true) oppure del fatto che c'è un errore di lettura (nel qual
caso feof ritorna false mentre ferror ritorna true).
Non si può sapere se il file è finito o no finché non si prova a leggere il
prossimo carattere, perché lo stesso file potrebbe essere aperto sia in
lettura sia in scrittura (magari da programmi diversi).
--
Cingar
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Newsgroup: it.comp.lang.c
Titolo: Numeri grandi fino a 100 cifre

Ciao a tutti,
devo inserire nel mio codice numeri grandi fino a 100 cifre per poi
eseguire delle operazioni su questi.Come posso fare concretamente se
il tipo di dato pių grande č il "long long"?
Potete farmi un esempio?
Grazie a chi mi aiuterā.
Byx.

 il tipo di dato più grande è il "long long"?
Devi ricorrere a libreria per l'aritmetica in precisione multipla.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Devi ricorrere a libreria per l'aritmetica in precisione multipla.
Puoi essere più chiaro.
Grazie.

 Grazie.
http://tinyurl.com/5g5cf


 devo inserire nel mio codice numeri grandi fino a 100 cifre per poi
http://www.swox.com/gmp/
g.

Newsgroup: it.comp.lang.c
Titolo: domanducce

Salve a tutti., volevo chiedere un paio di cose.
I listati c scritti con turbo c e quelli scritti su linux , in linea di
massima sono compatibili?
Perche' quando compilo un listato (sotto linux) e uso la funzione gets mi
arriva un errore che dice che il comando e' pericoloso e non dovrebbe essere
utilizzato?
Ultima cosa se dichiaro un array di caratteri, posso fare una assegnazione
var="stringa"?
grazie a tutti

 var="stringa"?
Risolto.

 var="stringa"?
Cioe'?
se hai
char var[20];
var="stringa" e' illegale.
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: Firewall

Salve a tutti,
vorrei sapere se qualcuno sa come realizzare un firewall in visual basic, o
se puo darmi qualche
indirizzo utile dove reperire informazioni.
Grazie e ciao.

vorrei sapere se qualcuno sa come realizzare un firewall in visual basic
E con questo gruppo cosa c'entra? Prova su it.comp.programmare.win32.
-- 
Marco Barisione (ICQ 84277092)

 indirizzo utile dove reperire informazioni.
hai sicuramente scelto il NG giusto :)
-- 
Rhymes
rhy...@myself.com
" ride or die "
Newsgroup: it.comp.lang.c
Titolo: ancora problemi....

Vi pongo un altro quesito (sono una rottura di scatole...):
siccome sto facendo un programma che calcoli il codice fiscale, ho avuto un
problema in una parte del codice (la prima, giusto per essere
rassicuranti... è anche l'unca che ho fatto, per ora!).
Ho scritto:
for (i = 0, j = 0; i < strlen(nome); i++) {
        if (nome[i] != 'a' && nome[i] != 'e' && nome[i] != 'i' && nome[i] !=
'o' && nome[i] != 'u')
            j++;
 }
 if (j >= 3) {
        for (i = 0, j = 0; j<4 ; i++) {
   if (nome[i] != 'a' && nome[i] != 'e' && nome[i] != 'i' && nome[i] != 'o'
&& nome[i] != 'u') {
                j++;
                sprintf(&codice[i], "%c", nome[i]);
               }
        }
}
in modo che il primo for cercasse il numero di consonanti del nome, e il
secondo, qualora questo numero fosse stato superiore a tre, scrivesse le
prime tre consonanti nell'array del codice.
Il problema è che non appena il programma trova una vocale nel nome, anziché
proseguire col for senza scrivere nulla nella stringa, termina il ciclo, col
risultato che nell'array ci sono solo le prime consonanti. Eppure mi sembra
che sia giusto, perché il for dovrebbe proseguire fino a che j è minore di
4, e j incrementa solo nel caso in cui si trovi una consonante.
Il fallimento dell'if non dovrebbe in nessun modo turbare il ciclo, no?
Se poi di volata qualcuno mi dicesse come abbreviare il test dell'if, gliene
sarei doppiamente grato.
Grazie.
Zeppe

sprintf(&codice[i], "%c", nome[i]);
Che orrore !!! ;)
prova con :
codice[i] = nome[i] ;
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------

codice[i] = nome[i] ;
È vero, è che ho visto la funzione sul manuale del C e mi sono esaltato!
Ciao,
Zeppe

 }
Credo che il tuo sia un errore sull'uso degli indici.
Prova cosi':
if     (j >= 3) {
       for    (i = 0, j = 0; j<4 ; i++)
                {
                 if (    nome[i] != 'a' &&
                        nome[i] != 'e' &&
                        nome[i] != 'i' &&
                        nome[i] != 'o' &&
                        nome[i] != 'u')
                    {
                    codice[j] = nome[i];
                    j++;
                     }
                }
Ivan Molella
Newsgroup: it.comp.lang.c
Titolo: Cript

Ciao a tutti
qualcuno conosce un algoritmo capace di criptare le stringhe ? Questa
necessita' nasce dal fatto che poi vorrei essere in grado di prendere la
stringa finale (criptata) e ottenere quella originale...
GRAZIE!!!

 stringa finale (criptata) e ottenere quella originale...
 Se ti accontenti di algoritmi semplici, ne so parecchi.
1- applica l'operatore binario NOT ad ogni byte. Per decifrare idem
2- aggiungi ad ogni byte un valore qualsiasi che sia noto a te (modulo 256).
Per decifrare sottrai.
3- decidi una chiave, e poi cifra ciclicamente la chiave applicando uno XOR
tra i byte della stringa e quelli della chiave. Per decifrare fai allo
stesso modo
4- Comprimila. (algoritmo da scegliere, richiede stringhe lunghette). Per
decifrare, espandi.
--
Alessandro Monti

momento del decript, ma anche cosě non mi tornavano i conti.
Non credo sia per questo.
Penso che dipenda da che sistema operativo usavi (probabilmente il
DOS, che per i file di testo spesso non restituisce la dimensione
reale come numero di byte) e che tipo di flag adoperavi per aprire il
file.
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)
----------------------------------------------------
Windows98 is a trademark of Topo Gigio Corporation.

Windows98 is a trademark of Topo Gigio Corporation.
Adesso recupero i sorgenti. Per quanto riguarda il SO: si, era sotto DOS, ma
mi sembra di ricordare che l'anomalia cuntinuava anche quando misi su
"Finestre95". (Certo, il compilatore era sempre Borland C++ 3.0 per DOS, e
guardavo le dimensioni in una shell di DOS... Ma che cacchio? Non ci si può
più fidare neanche di un DIR?
Palma Demis   (
dpa...@Beccati.lo.spam.racine.ra.it
)
-------------------------------------------------------------------------
Porte&Scaffali98 is a trademark of "Il Gatto con Gli Stivali"

più fidare neanche di un DIR?
Il problema e' che non e' un'anomalia.
I sistemi DOS/Windows gestiscono i file di testo diversamente da
quelli binari.
Comunque sono curioso di osservare il sorgente.
--
Andrea Laforgia
andrea_...@bigfoot.com

 Adesso recupero i sorgenti........
Se non ti dispiace anche io vorrei dare un'occhiata ai sorgenti di questo crypt.
--
Posted from 
mta03-acc.tin.it
 [212.216.176.34]
via Mailgate.ORG Server - 
http://www.mailgate.org

Ho scritto una libreria con funzioni di criptaggio/decriptaggio ....
Se in bisogno io son quà ;)
Nope

 Se in bisogno io son quà ;)
Voilà!
Perchè perdere questa opportunità di sfruttare codice di altri? :-)
Grazie
--
Alessandro Monti
Newsgroup: it.comp.lang.c
Titolo: Dimensione array

Salve,
come faccio a sapere la dimensione di un vettore?
Es.
int iVett[]={1,2,3,4,5};
Il vettore è di 5 elementi.
Come faccio a ricavarmi questo valore nel codice?
Per Es.
int iSizeVett;
iSizeVett=Dimensinoe(iVett);
Dove Dimensione (spero che esiste) è il comando per ricavarmi la dimensione
dell'array...
Esiste una fnzione standard?
Grazie
xoooox
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Come faccio a ricavarmi questo valore nel codice?
sizeof(iVett) / sizeof(int)
ciao,
g.

Scusa la mia incompetenza....
ma appena faccio
int x=sizeof(iVett) / sizeof(int);
me lo compila.. ma se faccio:
int x;
x=sizeof(iVett) / sizeof(int);
non me lo compila...
Cosa sbaglio?
Grazie
xoooox
Il 20 Gen 2004, 09:12, Giovanni Resta <g.r...@iit.cnr.it.nospam> ha
scritto:

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Cosa sbaglio?
Forse hai sbagliato a digitare. Non riesco a capire perche'
una funzioni e l'altra no. Quale e' esattamente l'errore
che ti da il compilaatore e quale compilatore stai
usando ?
ciao,
g.

Scusami ho fatto una cazzata :)
avevo messo l'assegnazione fra le dichiarazioni delle variabili e il
compilatore si incazzava :)
Tutto ok....
Ho provato a fare anche una matrice:
int iMat[2][6]={1,2,3,4,5,6, 7,8,9,10,11,12};
e per sapere la dimensione faccio:
iSize=(sizeof(iMat)/sizeof(int))/2;
Lo vedi corretto?
Comunque grazie di tutto..!!!
xoooox
Il 20 Gen 2004, 09:36, Giovanni Resta <g.r...@iit.cnr.it.nospam> ha
scritto:

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Giovanni Resta wrote:

Generalizzando, anche: sizeof(iVett)/sizeof(iVett[0]);
Ma funziona solo se la definizione di iVett è visibile: se viene passata 
come argomento (quindi per indirizzo), allora non è più possibile accedere 
alla dimensione, se non aggiungendo un argomento esplicitaente.
-- 
asettico (aka Roberto) [
http://www.rossomaltese.it/
]
GPG fingerprint [ BA20 8C8D 7712 9D9A 57F3  A96A A7BE 905C 1CB9 26BA ]
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS/IT/O d++(-) s:+>: a34 C++$ ULAVH*++$>++++ P+ L+>++++ E--- W++(-) N(++)
o? K-? w(---) !O M@ V@ PS+@ PE- Y? PGP->++ t+++ 5? X++ R tv+ b+ DI(+)
D++(---) G(-)>-- e>++++ h---() r++ y+++*
------END GEEK CODE BLOCK------

 iSize=(sizeof(iMat)/sizeof(int))/2;
Be', le dimensioni sono 2 in questo caso.
Se hai
int Ciccio[17][13];
allora per avere il "13" dovresti fare
sizeof(Ciccio[0])/sizeof(int);
e per aver il "17" dovresti fare
sizeof(Ciccio)/sizeof(Ciccio[0]);
a parte che in questo caso la dimensione "17" dovresti
comunque conoscerla a priori.
ciao,
g.
Newsgroup: it.comp.lang.c
Titolo: Parsing di un file di testo.

Salve, sto realizzando un programmino in C, che all'avvio deve
effettuare il parsing di 1 file di configurazione testuale,
contenente 3 semplici campi:
processo	cpu	nice
Il primo campo e' una stringa, il secondo sono 2 int. Il primo
e' un unsigned int, l'altro invece e' un int.
Per leggere i dati, faccio una semplice fgets, metto tutto in
una stringa, e poi con una sscanf parso i valori e l'inserisco
in 3 puntatori distinti. Mi e' sorto un dubbio, leggendo il
man di scanf:
 s
Matches a sequence of non-white-space characters; the next pointer
must be a pointer to char, and the array must be large enough to
accept all the sequence and the terminating NUL character.  The
input string stops at white space or at the maximum field width,
whichever occurs first.
Visto che ho stabilito che il puntatore a char che deve contenere
il nome del processo sia al massimo di 20 caratteri, ho messo
nella sscanf il parametro "%20s". Questo dovrebbe leggere solo i
primi 20 caratteri e troncare il resto giusto?
-- 
Hi, I'm a .signature virus! Copy me to your .signature file and
help me propagate, thanks!
Newsgroup: it.comp.lang.c
Titolo: Alcuni dubbi su puntatori e seek tra piattaforme diverse

Salve a tutti,
Sto cercando di compilare un programma su due piattaforme differenti ma
a meno di non modificare delle sciocchezze il compilatore si rifiuta
sputando degli errori.
La riga è la seguente:
if (*debug) {
        printf("ho ricevuto %s %d debug\n",filename[0],*debug);
}
dove filename[] è un array di stringhe.
Bene, se compilo questa cosa da una parte non dice niente e dall'altra
mi da:
warning: passing arg 1 of `fopen' from incompatible pointer type
warning: passing arg 1 of `sprintf' from incompatible pointer type
warning: passing arg 1 of `sprintf' from incompatible pointer type
Che ne pensate?
-- 


Prima di tutto questi sopra sono warning e non errori e poi
come fanno a riferirsi alla riga che quoti sopra ??
Quella riga contiene solo un printf, mentre tu hai messaggi riguardanti
la fopen e la sprintf.
Sei sicuro che si riferiscono alla riga giusta?
E di che tipo e' debug ?
Non e' che la printf e' stata ridefinita in qualche modo, magari come 
macro ?
ciao,
g.