mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: ordine alfabetico

scusate ma sono un novellino del C...e vorrei fare un esercizio che dice di
creare un programma in c che metta in ordina alfabetico le parole che io
voglio inserire...
Fatemi sapere grazie!!!

 parole che io voglio inserire...
tip: strcmp
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Runtime error 6D at f000:a12f : user incompetente

 wrote in message
a4bn51$88c$1...@dreamland.darkstar.net...


La tua risposta cmq non l'ho capita...che vuol dire????
La risposta di Kronos puo' essere tradotta piu' o meno come:
"i compiti falli da solo, ma ti do' un consiglio".
<TEACH MODE>
La strcmp() confronta 2 stringhe, dicendo quale delle 2 e' maggiore (o
in caso se sono uguali).
Tip: insertion sort
struttura dati: un'array contenente le stringhe
init: posizione_corrente = 0
while (posizione < dimensione_massima_array)
    1) scegli la stringa minima tra tutte
    2) swap (stringa_minima, posizione_corrente)
Ora hai la funzione da usare per il confronto, e l'algoritmo per
ordinare... se non ce la fai ti si da' una mano, pero' prima ci devi
privare da solo, se no non impari.
</TEACH MODE>
Mox :)

La tua risposta cmq non l'ho capita...che vuol dire????
La strcmp (string compare) è una funzione che serve a confrontare due
array di caratteri.
il prototipo è
int strcmp (char *s1, char *s2)
s1 e s2 sono due vettori di caratteri, e la funzione restituisce un
int
devi "leggere" la funzione sopra come se tu avessi scritto
s1 < s2
Se è vero, il risultato sarà un numero positivo,
se invece le stringhe sono uguali, il risultato sarà esattamente zero,
se infine ottieni un numero negativo, allora il secondo elemento è
"maggiore" del primo (alfabeticamente).
Una volta trovato il modo per confrontare le stringhe, puoi usare
qualunque metodo di ordinamento tu voglia per metterle in ordine
alfabetico.

 La tua risposta cmq non l'ho capita...che vuol dire????
La mia risposta  vuol dire: "ho capito che chiedevi  il codice pronto ma
non ho tempo/voglia  di farti i compiti. Tuttavia posso  dirti che tutto
quello che ti  serve e` la funzione strcmp()". Ti consiglio  di usare un
array  bi-di per  memorizzare le  stringhe e  aggiungo che  se non  vuoi
scriverti la funzione  di ordinamento puoi usare la  funzione qsort (che
trovi in stdlib.h).
Con questi consigli l'inserimento e  l'ordinamento si riducono a 3 (tre)
righe di codice.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
You and me baby ain't nothin' but mammals
So let's do it like they do on the Discovery Channel
Newsgroup: it.comp.lang.c
Titolo: include files E LINUX [OT]

AIUTO		, gcc non trova nč stdio.h, nč iostream.h, qualcuno ha idee?
per favore in posta:
lul...@tin.it

 
 
-------------
Questo messaggio e' stato inviato tramite i Newsgroup di Punto 
http://www.punto.it

 AIUTO , gcc non trova nč stdio.h, nč iostream.h, qualcuno ha idee?


 AIUTO		, gcc non trova nè stdio.h, nè iostream.h, qualcuno ha idee?
[root@fokhouse /root]# cat /etc/redhat-release
Red Hat Linux release 6.2 (Zoot)
[root@fokhouse /root]# rpm -qf $(locate /usr/include/{stdio.h,\*iostream})
glibc-devel-2.1.3-15
egcs-c++-1.1.2-30
[root@fokhouse /root]#
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)
Newsgroup: it.comp.lang.c
Titolo: [NIUBIE]perchè si chiude?

scusate se posto subitro ma non sono riuscito a risolvere il mio problema da
solo.
sono ignorante.
ho creato un semplicissimo programma in c il classico hello word. l'ho
compilato per windows e quando lo eseguo la shell di emulazione di dos, dopo
aver stampato la scritta si chiude da sola.
cosa devo fare per farla rimanere aperta?
grazie a chi mi voora rispondere e se avete da consigliarmi qualche guida
accetto volentieri.
grazie
--------------
ApO
-------------

cosa devo fare per farla rimanere aperta?
Leggi i posto precedenti, si parla di questo anche (indizio: devi
bloccare il programma in attesa prima che il controllo ripassi a Win).
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

 bloccare il programma in attesa prima che il controllo ripassi a Win).
grazie ho trovato(per caso) un post in cui si parlava di un problema simile,
e dicevano di mettere un getch(). ho provato e effettivamente non si chiude
più. ora il problema è un altro. qualndo lo compilo mi da:
}
^
prog\prova.c(6) : warning 18: implied return of main at closing '}' does not
return value
e poi lo compila. e il programma va.
il codice è questo.
#include <stdio.h>
main ()
{
printf ("Goodbye Cruel World!!!!");
getch();
}
qualche idea?
grazie
-----------------
ApO
-----------------

qualche idea?
Si, una :)  Ti sta dicendo che dal main c'e' un ritorno inplicito ala
parentesi graffa chiusa.
C'e' una premessa da fare: secondo lo standard C devi dichiarare il
main in 3 modi:
1) int main(int argc, char *argv)
2) int main(void)
3) int main()
(quest'ultimo dovrebbe essere deprecato in C99, ma credo venga
accettato senza troppi problemi, visto che era accettabile in C89).
Corretti la dichiarazione del main e aggiungi un return alla fine e il
warning sparira'.
Sarebbe bastato aggiungere un
return;
e il warning sarebbe sparito, ma non sarebbe corretto per via
dell'errata dichiarazione del main, cosa che non viene sempre
segnalata dai compilatori.


 segnalata dai compilatori.
Secondo le dichiarazioni di cui al punto 1 2 e 3 devi mettere
obbligatoriamente un return seguito da un valore intero (di solito 0 per
comunicare al SO che il programma è terminato normalmente e un valore
diverso da 0 altrimenti).
In realtà non conosco bene lo standard, ma conosco i compilatori MS e
Borland per Win: se usi la dichiarazione " main()" senza alcun tipo di
ritorno esplicitato, per default si assume che ritorni un int (e questo mi
sembra sia standard ANSI)-> quindi nel corpo del main ci deve
necessariamente essere un return seguito da un valore intero in ogni
percorso di uscita.
Per evitare ciò (ripeto che non conosco lo standard e quindi mi riferisco ai
compilatori che conosco) puoi usare "void main()" e quindi non usare alcun
return nel body del main.

return nel body del main.
E' contrario allo standard e possibile fonte di problemi (pensa a uno
script di bash che vada a leggere il codice di terminazione del
programma). Su questo molto melgio sfruttare l'eccessiva permissivita'
di alcuni compilatori.

Newsgroup: it.comp.lang.c
Titolo: alberi binari

Salve ho fatto un programma per costruire un albero binario,
una volta costruito vorrei pero' calcolarne l'altezza ma non riesco
a trovare un modo per farlo sapreste darmi almeno un'idea?
grazie

 wrote in message
3AE9E806...@tiscalinet.it...


 ha scritto nel messaggio
news:3AE9E806...@tiscalinet.it...



Si' e' un'esercitazione, la possibilita' di calcolare l'altezza pero' e'
una cosa in piu'


Mentre lo costruisco, per come ho strutturato la costruzione e'
impossibile, se ad esempio voglio creare l'albero
                                                       1
                                                 2            3
                                             4             5     6
creo 1 poi figlio sinistro di 1 posi figlio sx di 2 e poi esco dalla
funzione,
richiamo la funzione e creo figlio dx di 1 figlio dx di 3 e poi esco
poi la richiamo e mi sposto su 3  e creo figlio sx di 3 e cosi' ho finito
l'albero
in sostanza la funzione crea non mi crea l'albero tutto in una volta

 ha scritto nel messaggio
news:3AEAB92F...@tiscalinet.it...


int FindMaxDepth(TreeNode *Root, int Depth)
{
   static int MaxDepth = 0;
   if(Root) {
      Depth++;
      if(Depth > MaxDepth)
         MaxDepth = Depth;
      FindMaxDepth(Root->Left, Depth);
      FindMaxDepth(Root->Right, Depth);
   }
   return MaxDepth;
}
una chiamata alla procedura potrebbe essere ....
TreeNode *Root;
int Depth = 0, MaxDepth = 0;
...
Root = ........creazione dell'albero...
FindMaxDepth(Root, Depth, &MaxDepth
dovrebbe funzionare...
byez

"Nick(r)" wrote:

Grazie funge, ho pero' messo la variabile maxdepth globale

Newsgroup: it.comp.lang.c
Titolo: Gestire una lista

Salve, esiste qualche libreria standard del c con funzione che permettono 
di gestire delle liste di stringhe?
Magari con le classiche funzioni di inserimento cancellazione e ricerca...
Grazie
Ciao!
-Davide-

Magari con le classiche funzioni di inserimento cancellazione e ricerca...
No, devi fare a mano, oppure appoggiarti a librerie esterne (le prime
che mi vengono in mente sono le Glib).
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

Newsgroup: it.comp.lang.c
Titolo: [ot?][RETRY] Finestra Apertura File

 M D
Con l'opportuno widget sotto GTK+ o QT per esempio...
Sent via Deja.com
http://www.deja.com/

Ci dovrebbe essere il componente apri o giů di li, lo esegui nel tuo
programma e ti fai ritornare il nome del file da aprire...
-- 
Ciao, gengisdave
http://digilander.iol.it/gengisdave
Linux Registered User    # 198292
Linux Registered Machine # 88280

 ha scritto nel messaggio
news:3A82E20A...@libero.it...


 ha scritto nel messaggio
news:3A82E20A...@libero.it...


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

Cosa è l'abs?
Mi potete fare degli esempi molto chiari.
Vi ringrazio

 Mi potete fare degli esempi molto chiari.
int f = -10, g = 10, h = 0;
abs( f ) == abs( g ) == 10
abs( h ) = 0
Ciao.
Marco Spedaletti

 wrote in message
news:u_Lz9.16194$Bs5.5...@news1.tin.it...

Newsgroup: it.comp.lang.c
Titolo: recv maledetta!!

Ciao ragazzi,
cerco di essere breve.
Ho debian3.0 e WinXP in rete.
Obbiettivo: da debian aprire un socket con XP (sulla porta 21)
Soluzione: scrivere un programma (e l'ho scritto) che esegue una send
per lo user (fatto e funziona) e che esegue una recv per sapere se la
precedente send ha avuto buon fine (e qui ho fatto ma non va un tubo!).
Di seguito ciň che non viene:
------------------------------------------------------------
int response;
char *stringa;
[...]
strcpy(stringa, "user ");
strcat(stringa, user);
/**
* invio i dati tramite il socket "socketfd" aperto in precedenza
* (e credo con successo perchč errori non ne ricevo)
*/
response = send(socketfd, stringa, sizeof(stringa), 0);
/**
* verifico la risposta che ricevo dal server (il mio XP in rete)
* sul response = ... qui di seguito, il programmino mi si pianta 
* e sono costretto a terminarlo con CTRL+C
*/
response = recv(socketfd, buffer, 100, 0);
/**
* ho provato anche a cambiare l'ultimo parametro e settarlo a 1
* invece che a 0 e il risultato č che almeno ricevo -1.
* E' un errore č vero, ma almeno ricevo qualcosa!!
* Ho provato anche man recv ma non mi ha dato una gran mano! :-(
*/
if ((response = atoi(buffer)) != 331) {
  printf("Risposta strana del server\n");
  exit(1);
}
[...]
------------------------------------------------------------
Grazie a chiunque abbia voglia di interessarsi!
N@sh
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 response = recv(socketfd, buffer, 100, 0);
Perchè non c'è nulla da ricevere.
    val = fcntl(socketfd, F_GETFL);
    fcntl(socketfd, F_SETFL, val | O_NONBLOCK);
e non si pianta. Ma non riceve nulla lo stesso.

 e non si pianta. Ma non riceve nulla lo stesso.
... :-( I've not understood...
Potresti getilmente dirmi dove documentarmi... cosě non ti rompo piů...
Comunque grazie per la risposta tempestiva!


 ... :-( I've not understood...
Ho impostato il socket in non-blocking mode, in modo che recv non resta in 
attesa se non arriva nessun carattere, bensì esce tornando zero char 
ricevuti.
Ovviamente questo non risolve il problema ma eventualmente lo inquadra. Il 
fatto è al socket non sta arrivando ciò che ti aspetti, quindi il problema 
principale è nel protocollo che hai implementato.
Newsgroup: it.comp.lang.c
Titolo: CreateFile lunga

Salve,
ho una applicazione console che gestisce una porta seriale ed apre la COM
attraverso la chiamata classica
    m_hCom = CreateFile("COM1",
                        GENERIC_READ | GENERIC_WRITE,
                        0,    /* comm devices must be opened
w/exclusive-access */
                        NULL, /* no security attrs */
                        OPEN_EXISTING,
                        0,    /* not overlapped I/O */
                        NULL
                        );
l'applicazione normalmente è in attesa di un Event che segnala un comando
proveniente dall'esterno e che dice di aprire quella porta
    while (Shutdown==FALSE)
        {
        ret = WaitForSingleObject(hEventCmdReady,INFINITE);
        ...
        ...
        //qui esecuzione della CreateFile
        }
il problema viene fuori quando la CreateFile viene eseguita in conseguenza
del verificarsi dell'evento: l'API viene eseguita correttamente, ma impiega
dai 3 ai 6 secondi per terminare. Se invece la eseguo non in conseguenza
dell'evento e quindi non all'uscita della WaitForSingleObject è praticamente
istantanea come dovrebbe essere.
Qualcuno ha un'idea?
Grazie

     m_hCom = CreateFile("COM1",
"Chiamata classica"!?
Questo NG tratta del C standard, e nella libreria standard non esiste
alcuna funzione chiamata "CreateFile".
Credo che sia roba di Windows, quindi prova a chiedere nel NG
<it.comp.programmare.win32>.
--
Cingar
-- 
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: Conversione char to int

Scusate la banalita' della domanda, ma come faccio per convertire un
carattere di una stringa (che contiene comunque numeri) in un int?
Ho provato con atoi in questo modo (ho semplificato il prg):
char var[]="12345";
int n;
n=atoi(var[3]);
ma non ottengo i risultati desiderati, neanche con un cast o con ssprintf.

you wrote:

Se il tuo problema e' quello di convertire un carattere in un intero,
e' un non-problema, nel senso che il cast da char a int e' implicito.
int i = var[3] ;
Se il tuo problema e' invece quello di convertire una stringa nel
corrispondente valore intero, allora usa atoi().
Se il tuo problema e' invece quello di convertire un numero in stringa
allora usa sprintf().

 ma non ottengo i risultati desiderati, neanche con un cast o con ssprintf.
L'errore sta nel fatto che atoi prende (in windows)
un parametro char * (una stringa che finisce con \0)
se invece usi linux o comunque ansi compatibile,
ci sono altri parametri che non mi ricordo, tipo la base e altre cose
Ciao

ci sono altri parametri che non mi ricordo, tipo la base e altre cose
atoi() e' standard.

 ma non ottengo i risultati desiderati, neanche con un cast o con ssprintf.
Prova con
n = var[3] - '0';
otterrai il valore 4 (non il carattere '4'). Sempre che abbia capito
bene ciň che ti serve.
EMG

 se invece usi linux o comunque ansi compatibile,
[root@fokhouse /root]# uname -s
Linux
[root@fokhouse /root]# man atoi | col -b | grep -A3 ^SYN
SYNOPSIS
       #include <stdlib.h>
       int atoi(const char *nptr);
[root@fokhouse /root]#
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

ma non ottengo i risultati desiderati, neanche con un cast o con ssprintf.
Attento alla documentazione: atoi() converte da stringa a numero, quindi
con atoi(var)  /n/ assumerà 12345.
Francesco Cosoleto (
coso...@unive.it
)

ci sono altri parametri che non mi ricordo, tipo la base e altre cose
ti confondi con strtoul e affini
Oha
-- 
A: Is FOR an acronym or a TLA?
B: the second.

 bene ciň che ti serve.
Si, grazie, volevo ottenere proprio questo. Ma xche' togliendo '0' da un
char si ottiene il rispettivo int?
--
davser - 
dav...@libero.it
 - 
http://davser.cjb.net

mi ero sbagliato con itoa(int value,char *string, int radix);
;-)

 char si ottiene il rispettivo int?
Perché la "distanza" tra il codice del carattere in esame e il carattere
'0' č esattamente pari al valore cercato. Es.: in ASCII, '4' vale 52 e
'0' vale 48. La differenza 52 - 48 guardacaso č proprio 4.
EMG

'0' vale 48. La differenza 52 - 48 guardacaso č proprio 4.
Ed ovviamente il metodo suggerito e' utile solo nel caso del codice
ASCII.

 ASCII.
Mi sembra che anche in altri codici i numeri siano sempre in
quell'ordine, ma potrei sbagliarmi.
EMG

quell'ordine, ma potrei sbagliarmi.
Non sempre.
Credo, ad esempio, che per EBCDIC non sia cosi', ma non ne sono
sicuro. E comunque non e' assicurato.
Newsgroup: it.comp.lang.c
Titolo: GetFileSizeEx

Buongiorno,
ho un problema relativo al calcolo della dimensione di un file : la funzione 
GetFileSize mi restituisce sempre il valore -1,cosě ho provato ad usare la 
GetFileSizeEx.
Quest'ultima,perň, al momento della compilazione provoca il seguente errore 
: error C2065: 'GetFileSizeEx' : undeclared identifier
Puň essere qualche libreria che non ho richiamato?
Di seguito posto entrambi i codici che ho utilizzato,
sperando in vostri suggerimenti,
vi ringrazio anticipatamente,
buona giornata a tutti.
#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
int main()
{
 HANDLE fp;
 LARGE_INTEGER dim;
 fp = fopen("test.txt","r");
 if ( fp == NULL ){
  cout << "Errore nell'apertura del file" << endl;
 }
 GetFileSizeEx(fp,&dim);
 cout << dim.HighPart << endl;
 return 0;
}
#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
int main()
{
 HANDLE fp;
 DWORD dim;
 fp = fopen("test.txt","r");
 if ( fp == NULL ){
  printf("Errore nell'apertura del file\nverificare che il nome sia 
corretto\n");
 }
 dim = GetFileSize(fp,NULL);
 printf("Dimensione File : %10d\n",dim);
 return 0;
} 

   
Per prima cosa, questo è solo un problema di *windows* e non di C.
Per il resto, la GetFileExt richiede la  Kernel32.lib e va caricata, se 
non lo è,
la Kernel32.dll.
Poi esiste la GetLastError che quanche informazione in piu' la da: 
usala. ;-)
bye
brix

Newsgroup: it.comp.lang.c
Titolo: aiuto audio

devo fare un applicaizione che legga il registro della line out sulla scheda
sonora ...
dovrei fare alcune domande :
1-la formattazione del suddetto registro, in pratica per cosa sono
utulizzati i bit che lo compongono ...
2-Se le schede soundblaster compatibili hanno tutte lo stesso registro, come
indirizzo, oppure se si devono fare tanti if per le varie schede
3-Se posso accedere hai registri della scheda audio anche se non è il mio
programma che manda la musica...
4-Dove posso trovare informazioni sull argomento
vi ringrazio già da ora
Sean




Newsgroup: it.comp.lang.c
Titolo: CGI in C

Salve a tutti,
    vorrei scrivere alcuni piccoli programmi in C per la mia piccola
intranet per automatizzare alcune ricerche. Vorrei sapere alcune cose:
1) Come gestisco i parametri che il form manda col metodo post? Devo
considerarli come un array di string che viene passato all'esecuzione del
programma?
2)Qualcuno di voi mi può consigliare una struttura dati che mi permetta di
avere un algoritmo abbastanza veloce?
Grazie
----------------------------------------------------------------------------
-----------------------------------------------------------------------
Windows 98: 16 Millions lines of code that will never be debugged
----------------------------------------------------------------------------
-----------------------------------------------------------------------
bo...@iol.it

 avere un algoritmo abbastanza veloce?
Con il metodo POST, ti ritrovo quello che manda il client, con la
sua opportuna codifica, specificata nel;'attribute ENCODING,
sullo standard input. Devi recuperare le variabile d'ambiente
CONTENT_LENGTH e leggere tanti bytes quanti ti dice di leggere
quella variabile d'ambiente.
I parametri (nel caso "normale") ti arrivano come qualcosa del tipo
"a=b&c=d", che non e' un array di string. Poi, se non ricordo male,
il C non possiede il nobile concetto di array di string, piuttosto
di array di puntatori a carattere. Devi fare il parsing di quello
che manda il client.
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own    

Salve a tutti,
    vorrei scrivere alcuni piccoli programmi in C per la mia piccola
intranet per automatizzare alcune ricerche. Vorrei sapere alcune cose:
1) Come gestisco i parametri che il form manda col metodo post? Devo
considerarli come un array di stringhe che viene passato all'esecuzione del
programma?
2)Qualcuno di voi mi può consigliare una struttura dati che mi permetta di
avere un algoritmo abbastanza veloce?
Grazie


intranet per automatizzare alcune ricerche. Vorrei sapere alcune cose:
Le puoi chiedere direttamente su it.comp.www.cgi.
--
Francesco Trotta
http://space.tin.it/computer/ftrotta
Elimina "x_" dal mio indirizzo per mandarmi
un messaggio direttamente

che manda il client.
Le variabili d'ambiente devo metterle come
#define CONTENT_LENGTH
e cosě via o come faccio a prenderle?
Grazie

,

Mi sembra che tu abbia delle lacune di base sulle librerie fondamentali.
char *pEnv;
pEnv = getenv("CONTENT_LENGTH");
int  ContentLength;
ContentLength = atoi(pEnv);
char *pBuff = malloc(ContentLength+1);
read(0,pBuff,ContentLength);
pBuff[ContentLength]=0;
printf(pBuff);
Scritto senza compilarlo e testarlo, ma dovrebbe dare l'idea.


Grazie per l'aiuto, hai ragione sulle lacune, infatti provengo dal java e
vorrei aumentare le mie conoscenze
Grazie ancora

Newsgroup: it.comp.lang.c
Titolo: AIUTO

Salve a tutti, questo qui sotto è un listato sviluppato con le strutture e
il loro salvataggio su file.
Quando inserisco un nominativo quello già immesso in precedenza si cancella,
come posso fare ad inserire e a leggere più di un nominativo?
#include<stdio.h>
#include<conio.h>
struct fornitore{
 char nome[20];
 char cognome[20];
 char azienda[20];
}p;
void main(){
 int scelta=-1;
 int n;
 FILE *fp;
 while(scelta!=0){
  printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  printf("\t\t\t\tFORNITORI\n");
  printf("\n\n\n\t\t\t\t1. Inserimento\n");
  printf("\n\n\n\t\t\t\t2. Lettura\n");
  printf("\n\n\n\t\t\t\t0. FINE\n");
  printf("\n\n\n\t\t\t\tInserisci la scelta: ");
  scanf("%d",&scelta);
  printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  switch(scelta){
  case 1:
   printf("\nNOME: ");
   gets(p.nome);
   gets(p.nome);
   printf("\nCOGNOME: ");
   gets(p.cognome);
   printf("\nAZIENDA: ");
   gets(p.azienda);
   file://SCRITTURA
   fp=fopen("Fornitori.dat","a+");
   fwrite(&p,sizeof(struct fornitore),1,fp);
   fclose(fp);
   break;
  case 2:
   file://LETTURA
   fp = fopen("Fornitori.dat", "r");
   fseek(fp,0,SEEK_SET);
   if (fp == NULL) {
    printf("Impossibile aprire il file");
    fclose(fp);
    break;
   }
   else
    for(;;) {
     fseek(fp,0,SEEK_CUR);
     n = fread(&p, sizeof(struct fornitore), 1, fp);
     if (n == 0) {
      fclose(fp);
      break;
     }
    }
   printf("\n--->NOME: %s\n",p.nome);
   printf("\n---->COGNOME: %s\n",p.cognome);
   printf("\n----->AZIENDA: %s\n\n",p.azienda);
   getch();
   break;
  }
 }
}

   break;
Hai messo la stampa dell'elemento *fuori* dal ciclo for, in questo
modo ogni elemento caricato in memoria va a sovrascrivere il
precedente (usi sempre la stessa variabile p).
Se tu volessi stampare tutti gli elementi, basterebbe mettere le
printf all'interno del for, come segue:
   fp = fopen("Fornitori.dat", "r");
   fseek(fp,0,SEEK_SET);
   if (fp == NULL) {
    printf("Impossibile aprire il file");
    fclose(fp);
    break;
   }
   else
    for(;;) {
     fseek(fp,0,SEEK_CUR);
     n = fread(&p, sizeof(struct fornitore), 1, fp);
     if (n == 0) {
     printf("\n--->NOME: %s\n",p.nome);
     printf("\n---->COGNOME: %s\n",p.cognome);
     printf("\n----->AZIENDA: %s\n\n",p.azienda);
     getch();
      fclose(fp);
      break;
     }
    }
   break;
-- 
Cordiali saluti
  Artemio
Newsgroup: it.comp.lang.c
Titolo: passaggio per riferimento

Ciao a tutti,
una domandina facile facile..
dato questo main:
-----------------------------------------
int main( )
{
         int a = 5;
         printf( "prima: %d\n", a );
         funzioncina( &a );
         printf( "dopo: %d\n", a );
return 0;
}
-----------------------------------------
dove "funzioncina" e':
void funzioncina( int *val )
{
         *val = *val + 1;
}
l'output e':
prima: 5
dopo: 6
e se invece modifico funzioncina cosi':
void funzioncina( int *val )
{
         *val++;
}
il valore non viene incrementato ?
prima: 5
dopo: 5
grazie

 }
perchè l'incremento viene eseguto dopo che è stato preso val (incremento 
postfisso)...
se scrivevi *(val++) o *(++val) funziona. 

 se scrivevi *(val++) o *(++val) funziona.
rettifico...
++(*val)
sono fuso! 

Effettivamente come dicevi tu si sarebbe incrementato l'indirizzo e poi 
sarebbe stato restituito un valore che non c'azzeccava nulla :)
-- 
Quando noi ignoranti eravamo di più, tutto era più bello (A. Celentano).
  ___   _   ___ _  _______   _______ ___
|   \ /_\ | _ \ |/ / _ ) \ / /_   _| __|
| |) / _ \|   / ' <| _ \\ V /  | | | _|
|___/_/ \_\_|_\_|\_\___/ |_|   |_| |___|

 sarebbe stato restituito un valore che non c'azzeccava nulla :)
La droga a volte fa male! ;-) 

 La droga a volte fa male! ;-) 
Non č detto :) :) :)
Basta usarla con parsimonia :lol:
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello (A. Celentano).


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

volevo iniziare a capirci un pň in questo c++ ma avrei un paio di domande da
fare....
che differenza c'č tra c++ e c ??
per iniziare non sapendo nulla da cosa mi conviene partire???
dove trovo un manuale in linea che posso scaricarmi possibilmente in
italiano con il quale posso farmi le basi???
grazie ed a presto!!

 per iniziare non sapendo nulla da cosa mi conviene partire???
Secondo me per iniziare ti merita sicuramente partire dal C perchè come ti
ho detto è la base.
$Ale$

 ho detto è la base.
Dissento. Se uno vuole imparare il C++ deve iniziare con il C++. Il
dubbio semmai è se sia proprio quello di cui si ha bisogno...
EMG

 EMG
  Non sono daccordo, il cpp ha le sue basi troppo radicate nel c,  e una non
buona padronanza del linguaggio c impedirebbe ad un programmatore cpp di
sfruttarne tutte le potenzialita' dato che in genere testi sul cpp si
concentrano ovviamente su concetti tipici del linguaggio: oggetti, costruttori
,template, dati di tipo classe.........dando per scontato
che il programmatore sia a conoscenza del fatto che per esempio esistono anche
puntatori a funzione, generalmente trattati in testi specifici del linguaggio c.
Ivan Molella

 puntatori a funzione, generalmente trattati in testi specifici del linguaggio c.
Però se prendi un testo come si deve ti spiegherà tutti i concetti del
C++, compresi quelli ereditati dal C e le loro sottili differenze.
EMG

Ivan Molella

 informatica...
Continuo a non essere daccordo, resto del parere che per chi voglia cominciare a
programmare seriamente in cpp deve digerire bene prima tutti i  concetti del c.
Ivan Molella
Newsgroup: it.comp.lang.c
Titolo: manipolazione files in C

ciao a tutti vi pongo il mio problema.
sto sviluppando un CGI e voglio che tutti i dati che gli utenti inseriscono
vengano "sparati" in un file html per poterli comodamente leggere.
il mio problema è che per outputare i dati dentro al file html devo
inserirli 21 caratteri prima della fine del files [i caratteri finali del
file infatti sono </font></head></html> ]
ho provato scrivendo
if ( (fseek(fileuscita,21,SEEK_END)) != 0 )
{
fprintf(fileuscita, "errore");
}
ma la scritta errore nel mio file htm non compare mai !!!
il problema è che tutti i dati che io devo mettere dentro al file vengono
appesi in fondo proprio come se quelle 2 righe di codice non venissero
neanche valutate !!!
qualcuno ha capito il problema ed è in grado di aiutarmi ?
rleo

vengano "sparati" in un file html per poterli comodamente leggere.
Perche' non lavori con dei file di testo ?
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------------
"There is nothing better for understanding a kangaroo
 than seeing it jump." [D.Grune, C.J.H. Jacobs]

> Perche' non lavori con dei file di testo ?
Perchč mi serve un output piů bello di un semplice file di testo in quanto
il mio CGI raccoglie i dati di un modulo reclami e mi serve la formattazione
che l'utente ha dato nel modulo compilato....
Anyway, saresti in grado di aiutarmi ?
rleo

Anyway, saresti in grado di aiutarmi ?
Non capisco : il tuo CGI non gestisce l'output come pagina .html ?


 >
E allora usa PHP!!!
HA una sintassi molto simile a quella del C, perň č fatto apposta!!
Alessio Rocchi

Newsgroup: it.comp.lang.c
Titolo: media sbagliata

qualcuno mi sa dire perchè questo programma da come output 0 o numeri molto
grandi (sbagliati)
#include <stdio.h>
#include <stdlib.h>
float media(float a, float b, float c);
int main(int argc, char *argv[])
{
  printf("%d", media(4.0,  5.0,  9.0));
  system("PAUSE");
  return 0;
}
float media(float a, float b, float c)
{
 return ((a+b+c)/3);
}

 qualcuno mi sa dire perchč questo programma da come output 0 o numeri molto

printf("%d" non č corretta .... printf("%f" invece sě

  printf("%d", media(4.0,  5.0,  9.0));
Questa non fa quello che pensi. Poiche` la printf ha un prototipo
incompleto (vararg) il compilatore non effettua conversione e
troncamento da float ad int. Quello che accade (su x86) e` che quello
che c'e` sullo stack (numero in floating point in codifica IEEE) viene
interpretato (non *convertito*) come un numero interno in complemento a
2. I risultati li hai visti ;) 
Luca
-- 
Home: 
http://kronoz.cjb.net
"Di tutte le perversioni sessuali, la castita` e` la piu` strana".
Anatole France
Newsgroup: it.comp.lang.c
Titolo: Programmare win32 con gcc

Ciao a tutti;
volevo cominciare a programmare Windows usando le API win32, ma non sono
in possesso di compilatori C commerciali. E' possibile usare win32 con il
Cygnus gcc per Windows? In caso affermativo, esiste una documentazione su
win32 (free, non ho voglia di comprare libri...) scaricabile da rete?
			Grazie e ciao,
				Luca

Ciao,
    certo che e' possibile!! Per quanto riguarda i tutorial Alex Martelli
per conto del GIDA (Gruppo Italiano Documentazione Api) ha scritto (e
continua a farlo) un magnifico tutorial da zero. Per vederlo devi aspettare
che venga pubblicato o su C++Warriors o, nel caso venga approvato, sul nuovo
newsgroup it.comp.programmare.win32.
Tutorial in Inglese ce ne sono in giro ma non saprei indicartene uno :-(
A presto e a disposizione per altre domande :-)
Marco Abis su IRCnet #C++Warriors
http://www.geocities.com/SiliconValley/Foothills/6336
 interamente dedicato
al C++
ca...@technologist.com
Luca ha scritto nel messaggio ...



Newsgroup: it.comp.lang.c
Titolo: Problema con in file

Dopo aver memoriazzato una decina di nomi tramite una
struttura, usando fp = fopen("NomeFile","ab+");,
vorrei modificare il contenuto dei record attuale,
ma senza cambiargli la posizione.
ho provato ad aprire con fp=fopen("Nomfile","rb+");
con una successiva fwrite...
ma non mi funzia ...
chi mi puo' aiutare ...grazie.

...


 ma non mi funzia ...
Per forza: "r" significa "apertura in lettura".
EMG

 
Forse ti sei dimenticato di posizionarti sul record:
	fseek(fd, num_record*sizeof(record), SEEK_SET);
o, per posizionari sull'ultimo:
	fseek(fd, -sizeof(record), SEEK_END);
o, per posizionarti sul precedente (ultimo scritto/letto):
	fseek(fd, -sizeof(record), SEEK_CUR);
prima di fare la fwrite(). fopen(.., "r+b") si posiziona a inizio file,
mentre una fwrite()/fread() avanza in puntatore alla posizione corrente nel
file del numero di byte scritti/letti.

Scusa ma rb+ significa accesso in lettura scrittura ...

 Per forza: "r" significa "apertura in lettura".
Oops! Errore: "r+" significa "apertura in lettura e scrittura su un file
preesistente". Il problema deve essere un altro.
EMG

Ok ora funziona bene.
Grazie di tutto.
Newsgroup: it.comp.lang.c
Titolo: puntatori a strutture

ciao a tutti
Ho un problema di questo genere:
/*ho fatto 2 typedef*/
typedef struct
    {
        int a;
        char b;
    }ciao;
typedef struct
    {
        ciao c;
        int d;
    }buongiorno;
/*ho poi fatto nel main questo assegnamento*/
int main()
    {
        buongiorno var;
        funzione(&var);
    }
/*vorrei modificare per riferimento in una funzione quella "var"*/
void funzione(buongiono *p)
    {
        p->d=0;   /*dovrebbe essere giusto*/
          /*il mio problema è richiamare p.c.a*/
        (p->c).a  /*non funziona*/
        (p->c)->a /*non funziona*/
        /*ne ho provati altri ma inutilmente, potreste spiegarmi? a volte il
compilatore non mi da errore, ma durante l'esecuzione mi compare un errore
di windows*/
    }

     }
Sei sicuro che nel main hai istanziato un oggetto buongiorno, e non un 
puntatore (non inizializzato)? A giudicare dall'errore sembrerebbe che hai 
tentato di accedere a memoria non allocata.
La sintassi 
(p->c).a
e` corretta, caso mai prova a postare il codice intero.
Ciao,
Cecco

 ha scritto nel messaggio
news:w6GU9.1455$ZE.3...@twister2.libero.it...
 > caso mai prova a postare il codice intero.
devo leggere un file "log.txt" e inserire le informazioni su un array.
Il file "log.txt" contiene tante righe di questo tipo:
1/12/2001 19:14:20 6
nella "scanf" della funzione leggi() ho carcato di salvare solo il primo
dato per rendere + corta la riga
funzioni.h
-------------------------------------
#include <stdio.h>
#define N 200
#define VERO 1
#define FALSO 0
typedef struct{
 int gg,mm,aa;
 int hh,min,ss;
 int day;
 }riga;
typedef struct{
 riga elenco[N];
 int cont;
 }log;
int leggi(log *a);
______________________________________
funzioni.c
-------------------------------------
#include "funzioni.h"
int leggi(log *a)
 {
  FILE *p;
  int i=0;
  a->cont=0;
  p=fopen("log.txt","r");
  if(p==NULL)
   {
    printf("\aApertura file fallita");
    return FALSO;
   }
  while((fscanf(p,"%d",(a->elenco[i]).gg))!=EOF);
   {
    a->cont++;
    i++;
   }
  return VERO;
 }
_____________________________________
main.c
---------------------------------
#include "funzioni.h"
void main(){
 log ciao;
 leggi(&ciao);
 }

 ha scritto nel messaggio
news:lIQU9.27396$0v.7...@news1.tin.it...
Ho risolto!!!
mi dimenticavo la & nell fscanf()
Newsgroup: it.comp.lang.c
Titolo: INFORMAZIONE

CIA A TUTTI, VORREI UNA PICCOLA INFORMAZIONE.
VORREI SAPERE SE ESISTONO SOFTWARE CAPACI DI DISEGNARE DIAGRAMMI DI
FLUSSO RELATIVI AD UN PROGRAMMA DA TE CREATO,  INSERENDO IL CODICE
SORGENTE DI TALE PROGRAMMA.
MI SERVE QUESTA INFORMAZIONE PECHE' STO LAVORANDO AD UN PROGETTO
SCRITTO IN LINGUAGGIO C E IN QUESTO PROGETTO UNA FUNZIONE HA UN CICLO
DI FOR CHE ANNIDA N IF  ED UNA SWITCH. IO HO CREATO IL DIAGRAMMA DI
FLUSSO INERENTE MA NON SO SE STA FATTO BENE E PE MAGGIOR SICUREZZA
VORREI CONTROLLARE.
GRAZIE A TUTI CIAO

 wrote in news:b9920bdc-02a7-41ae-acd1-
aac613...@y21g2000hsf.googlegroups.com
:
Hai la tastiera rotta che scrivi tutto in maiuscolo?
Cmq si, ci sono.
www.google.com
 e' da quella parte ->
Ciao Jack
-- 
Eroi non si nasce, ti incastrano
- Jim Belushi

SCUSAMI NON HO CAPITO POTRESTI ESSERE PIU' CHIARO GENTILMENTE?
DA QUELLA PARTE DOVE?
GRAZIE CIAO

   
Evita di scrivere in maiuscolo. Guardati la netiquette prima di postare!
Da QUELLA parte: usa google e POI se non trovi chiedi ;-)
Prova a cercare doxygen e Graphviz ....
Bye
B.

 SORGENTE DI TALE PROGRAMMA.
scrivere in maiuscolo s'intende GRIDARE e non è proprio educato.
cerca doxygen come ti hanno già suggerito (esiste anche un frontend
apposito).
L'argomento è stato già trattato. Non si può avere sempre la pappa
pronta :)
ciao.

scusate ma non lo spaevo.
all'inizio quando postavo, mi rispondevano dicendo non gridare ma non
capivo il perchè?
grazie per avermi illuminato.
comunque ho risolto grazie ciao

Newsgroup: it.comp.lang.c
Titolo: Problema lettura linea da stdin e da file

Il mio problema è il seguente:
ho notato una cosa strana, facciamo conto che devo inserire un numero
ed una frase. Se faccio uno scanf("%[^\n]",frase) prima del numero va
tutto liscio (infatti mi stampa quello che ho scritto) MA se faccio lo
scanf dopo che ho richiesto il numero non me lo fa inserire (è come se
lo saltasse) e termina il programma. Questo mi accade con gcc, (a dir
la verità anche con devc, ma sono riuscito a risolvere con
fflush(stdin), mentre sul gcc non se ne parla proprio. Secondo voi che
cosa può essere? Sono io che non  sono a conoscenza di qualcosa o c'è
qualche altro problema???
Grazie  
dexter

 fflush(stdin)
Eresia!
Luca
-- 
"Chi parla in tono cortese, ma continua a prepararsi, potra` andare avanti;
 chi parla in tono bellicoso e avanza rapidamente dovra` ritirarsi" 
Sun Tzu -- L'arte della guerra

 > lo saltasse) e termina il programma.Newline residuo nel buffer dello stdin.


 non va bene fflush(stdin)???
http://c-faq.com/stdio/stdinflush2.html
http://c-faq.com/stdio/stdinflush.html
http://c-faq.com/stdio/scanfprobs.html
ps: 
http://wiki.news.nic.it/QuotarBene
ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com
Newsgroup: it.comp.lang.c
Titolo: Compilatore gcc

Ciao a tutti! ora farò una domanda che molto probabilmente è stata
fatta un miliardo di volte...come faccio a installare il compilatore
gcc sul mio pc? ho scaricato dal sito 
http://gcc.gnu.org/
 la versione
4.1.1, che dovrebbe essere la più recente, ma non ho la minima idea di
come vada installata. Le spiegazioni presenti sul sito non mi sono
molto chiare e quello che ho preso dall'ftp non è altro che una serie
di file compressi. A quanto ho capito bisogna fare un configure prima
di spacchettare....ma già quello mi crea problemi, insomma sono
abbastanza a terra! se qualcuno può aiutarmi....
grazie in anticipo!
Massi


Su che sistema operativo sei?
Se sei su Linux perché impazzire a compilare se non sei capace? La tua
distribuzione sicuramente ha la possibilità di installare gcc.
Se sei su Windows idem, sul sito di gcc ci sono (se non ricordo male)
anche gli zip con tutto precompilato Windows per macchine x86
(perfettamente funzionanti se non hai una macchina strana).
Se sei su Mac non ho idea.
Se proprio vuoi compilare, ci dovrebbe essere tra i file che hai
scaricato, un file di testo chiamato INSTALL con le istruzioni (se sei
su Windows, prima di seguirle, ti devi installare parecchia robetta, e
forse è lo stesso per Mac. Su Linux non sempre)
Spero di esserti stato di aiuto ^_^
-- 
Lorenzo Breda

 (perfettamente funzionanti se non hai una macchina strana).
Ciao e grazie! Io sono su windows e sul sito di gcc ci sono tantissimi
file scaricabili...a quale fai riferimento tu? 
Grazie
Massi


In Current > GCC, comunque, ci sono anche un po' di altri files. Quelli
marcati con bin sono già compilati ed eseguibili. Direi che al massimo
ti sere g++. Se programmi anche in altri linguaggi (FORTRAN77, ADA e un
po' di altra roba ti può servire anche il resto).
Se vuoi qualcosa di pronto ed installabile ti puoi scaricare qualche
ambiente con gcc integrato, ma io ti consiglio il gcc pulito.
-- 
Lorenzo Breda
Newsgroup: it.comp.lang.c
Titolo: Aiuto librerie!

Per compilare dei programmi ho bisogno di alcune librerie che nel
compilatore della Borland nn ci sono, sapete dove le posso trovare?
 Grazie

  Grazie
Questo NG tratta solo di C standard... ad ogni modo se non dici quali sono
le librerie.....
Tommy

Newsgroup: it.comp.lang.c
Titolo: Dubbi su stringhe

void main(void)
{   char *testo="Prova di testo";
   testo[5]='e';
}
Io compilo il programma per essere eseguito in una finestra del prompt di
MS-DOS (lo so, è un metodo antiquato, ma per i test di alcuni algoritmi
va più che bene), quindi lo devo compilare per l'esecuzione in modalità
reale. Ho scelto il modello "large".
Lo eseguo in finestra del prompt dei comandi sotto Windows, ma,
all'esecuzione dell'assegnamento, Windows salta fuori con un "Accesso
da parte del programma MS-DOS ad una zona di memoria non autorizzata"
o una roba simile (ora non ricordo), offrendomi la possibilità di lasciar
proseguire il programma o terminare la sessione di MS-DOS. Se lo lascio
proseguire va tutto bene, se lo termino il sistema operativo continua a
funzionare senza crashare. Ora mi chiedo: c'è un errore che il
compilatore lascia passare (non mi da nè errori, ne warning),
o c'è qualcosa che non va in Windows (e quando mai)?
Grazie delle eventuali risposte.

da parte del programma MS-DOS ad una zona di memoria non autorizzata"
Certo, perche' le stringhe costanti non sono modificabili.
--
Andrea Laforgia (ICQ 87230455)
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."


Perchč allora il compilatore (Borland C++ 5.02) non me lo segnala?
Vorrei precisare inoltre che ho lasciato le impostazioni per gli
avvertimenti
come standard
Newsgroup: it.comp.lang.c
Titolo: Implementare multilingua

Devo implementare il supporto multilingua in un progetto
C in ambiente embedded. Questo ultimo fattore mi impedisce
di avere un vero e proprio file esterno con i vari messaggi
nelle varie lingue.
Fin'ora ho usato un approccio di questo tipo:
print_msg(char *msg)
{
    unsigned int count = 0;
    while (count != lingua)
    {
        while(*msg != '\0')
        {
            ++msg;
        }
        ++msg;
        count++;
    }
    printf("%s",msg);
}
dove 'lingua' è il numero della lingua (impostato altrove)
e 'msg' è una stringa in questa forma:
#define MSG_LINGUA   	"    ITALIANO    \0"\
        "    ENGLISH     \0"\
        "    DEUTSCH     \0"\
        "    FRANCAIS    \0"\
        "    ESPANOL     \0"
e quindi scrivendo:
print_msg(MSG_LINGUA);
Questo approccio però presenta un problema:
come faccio a fare una cosa di questo tipo?
ITALIANO:
printf("Campionamento N: %2u Temperatura media  : %2.2f", Camp, Temp);
INGLESE:
printf("Sampling Number: %2u Average Temperature: %2.2f", Camp, Temp);
In modo che venga scritta automaticamente la cosa giusta
in base alla selezione della lingua?
Ringrazio anticipatamente
-- 
Gerolamo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 in base alla selezione della lingua?
Se invece di specificare la lingua quando chiami la funzione (potresti
sempre usare una variabile settata all'inizio del file) vuoi solo passare
Tommy... allora cambia il prototipo da:
void PrintHello(enum LANGUAGE l,char *name)
a:
void PrintHello(char *name)
e poi usa una costante globale per la lingua. Dentro PrintHello() userai
questa globale:
printf(output_msg[DEFINED_LANGUAGE],name);
Ok, in questo modo non e' facilissimo mantenere tanti messaggi. Se il
progetto e' piccolo va bene, altrimenti ti perdi.
Se il progetto e' grosso ti conviene pensare ad un modo alternativo.
Tommy

 alternativo.
Ci penserò, intanto grazie


 finiscono in fretta :-))
Scommetto che invece di avere tutte le lingue in un array (come ho fatto
io), ne hai solo una:
con #ifdef #ifndef #endif includi, quando compili, includi solo una lingua.
E' uguale al mio sistema ma:
- riparmi memoria (bene)
- non puoi cambiare la lingua at run-time (o in altre parole non puoi
cambiare la lingua da un menu se ne esiste uno).
Valuta tu.
Magari ho indovinato male....
Tommy

Newsgroup: it.comp.lang.c
Titolo: Debugger Run-Time

Salve,
sto cercando qualche programma che permetta di debuggare in Run-Time
eseguibili scritti in C, con Visual C ++ 1.5, a 16-bit. Qualcosa che
permetta di individuare problemi di memoria non disallocata, puntatori non
inizializzati e comunque errori che non necessariamente generano il crash
del programma in modo deterministico.
Grazie.

...

Newsgroup: it.comp.lang.c
Titolo: ma perchè mi fa così? che mestizia....

disturbo ancora un po'. Programmino semplice semplice:
#include <stdio.h>
#include <string.h>
main(int argc,char *argv[])
     {
       FILE *testo;
       char *linea;
       char *parola;
       testo=fopen(argv[1],"r");
       fgets(linea,1024,testo);
       for (parola = strtok(buf, " ,");parola;parola=strtok(NULL, " ,"))
         printf("%s\n",parola);
     }
Allora...teoricamente questo programma dovrebbe prendere la prima riga da un
file di testo che gli passo (presente nella directory dell'exe),
quindi stamparmi su schermo tutti i token,delimitati nel testo con spazi o
virgole, andando a capo tutte le parole. Ecco, a casa mia funziona, mentre a
casa di miei amici non vuole saperne di funzionare(non stampa niente): la
linea la prende, ho provato anche a mettere una prinft dopo l'fgets per
controllare, ma il ciclo for manco a parlarne.
E il bello č che se al posto di prendere la linea da file metto la stringa
da suddividere direttamente nel codice tutto funziona alla perfezione.
Qualcuno sa dirmi perchč?
Grazie
Riccardo

 alla perfezione. Qualcuno sa dirmi perchè?
  E` strano che il programma funzioni: usi come destinazione della
fgets() un buffer, /linea/, non allocato. Questo dovrebbe, generalmente,
provocare un errore di protezione, forse il tuo compilatore e` in grado
di prevenirlo con qualche artificio che il compilatore dei tuoi amici
non utilizza.
  Inoltre, passi alla funzione strtok() una stringa, /buf/, indefinita:
cio` potrebbe farmi pensare che il codice che hai postato non
corrisponde all'originale, essendosi magari perso il vero motivo del
comportamento non previsto.
  Infine, apri il file in modalita` "testo", cosi` eviterai che
l'interpretazione della sequenza di "fine-linea" variabile da sistema a
sistema influenzi il funzionamento del programma.
	Alla prossima,
		Marco
Newsgroup: it.comp.lang.c
Titolo: LEGGERE/SCRIVERE PIXEL VESA SENZA UTILIZZARE INT 10h

Scusate.
Vorrei sapere come si possono leggere e scriver pixel nelle
risoluzioni VESA bypassando la INT 10h 
Alcuni mi hanno detto di andarmi a prendere i pacchetti per
sviluppatori alla Scitech, ma volevo fare qualcosa di alternativo alle
loro librerie.
Se potete passarmi dei documenti o magari del codice (Forse chiedo
troppo!)
Grazie!
Stefano E-MAIL :  
nep...@freemail.it

risoluzioni VESA bypassando la INT 10h
Io non sono un programmatore esperto, però stavo provando a creare un
piccolo motore grafico 3d in wireframe.
Per scrivere pixel nella modalità video 0x13, cioè a risoluzione 320x200 a
256 colori, vado a mettere i dati direttamente nella memoria video, che in
questa modalità dovrebbe iniziare per tutte le schede all'indirizzo
0xA0000000.
Per questo il mio codice è:
byte far* video = (byte far*) 0xA0000000L;
....
void put_pixel(int x, int y, int color) {
*(video+(y<<8)+(y<<6)+x) = color;
}
Puoi lavorare analogamente per la lettura video.
Comunque l'interrupt 0x10 mi è necessario lo stesso per entrare in modalità
grafica (e per uscirne).
Spero di essere stato utile; se qualcuno sta lavorando come me con la
grafica, e vuole darmi suggerimenti o scambiare idee, sarei ben felice se mi
contattasse (tenete presente che sono un principiante).
Ciao,
Alberto

 troppo!)
si, avrei qualcosa fatto da me (in pascal, circa 3/4 anni fa), ma ti
consiglio qualcos'altro:
- libreria Allegro 3.0, contiene i sorgenti di molte routine grafiche,
funziona sia con schede che hanno bios VESA che senza, usa anche i driver
accelerati (questi da poche settimane, percio` non so a che punto sia).
- documenti da leggere: VGADOC (credo version 4) contiene un sorgente in
pascal che fa tutto.
- specifiche VESA dal sito scitech, oppure la lista di ralph brown
gli indirizzi non li ricordo, nella mia home page guarda nella sezione link,
oppure djgpp
---
Ranger, togli .fr dal mio indirizzo per rispondere
http://members.tripod.com/%7Eranger_rg/

Stefano E-MAIL :  
nep...@freemail.it

Newsgroup: it.comp.lang.c
Titolo: HELP C++... diferenze da C...

In di solito per scrivere una stringa faccio
printf('Ciao/nBy Razziatore');
Ma so che siste un metodi più rapito in C++ del tipo
comando << 'Ciao/nBy Razziatoro'
Visto che con le stringe di testo non ci sono diferneze ma con le 
variabili mi hanno detto che non c'è bisongo di indicare il tipo
se è vero mi dite quale #include e quale comando bisonga fare...
Io uso Bloodshed Dev-C++ versione 4
grazie

se è vero mi dite quale #include e quale comando bisonga fare...
it.comp.lang.c++
--
Andrea Laforgia (ICQ 87230455)
http://www.geocities.com/AndreaLaforgia
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."