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

	Ho appena scaricato il DJGPP  e, dopo aver scompattato i file
e aver modificato l'autoexec, cosa devo fare per scrivere del codice e
far funzionare il mio programmino?
	Esiste un manuale in italiano del DJGPP?
Grazie per l'aiuto
Angelino

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

Newsgroup: it.comp.lang.c
Titolo: dns query

Salve. Qualcuno mi sa indicare delle strutture per utilizzare le query
DNS e le rispettive risposte?!? in che header le trovo? Io lavoro su
linux debian. Scusate se sono OT ma tra i vari newsgroup che ho trovato,
questo dovrebbe essere quello piu' giusto. Grazie.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 questo dovrebbe essere quello piu' giusto. Grazie.
Ce n'e` uno ancora "piu` giusto": it.comp.os.linux.development.
-- 
Baci,
Mony
Newsgroup: it.comp.lang.c
Titolo: Dichiarazioni e Definizioni

Ciao a tutti,
mi potreste spiegare che differenza ha il termine dichiarazione ed il
termine definizione in C?
Purtroppo, a causa di un libro di Bruce Eckel (Programmare in C++) dove si
parla solamente di dichiarazioni e/o definizioni di variabili e funzioni; a
causa di un libro di testo scolastisco dove si parla solamente di
dichiarazione definente e dichiarazione referenziante - valgono anche per le
funzioni? -; ed infine l'helping in linea del compilatore dove si parla
solamente di dichiarazioni,  mi č venuta fuori un gran confusione che non mi
ci raccapezzo piů.
Cosa dice lo standard a proposito?

parla solamente di dichiarazioni e/o definizioni di variabili e funzioni; 
Lascio perdere le definizioni del tuo testo scolastico (su
cui mi permetto di esprimere un ROTFL) e ti dico di stare a
sentire Bruce Eckel, il quale nel suo Thinking in C++
afferma, giustamente, che nel caso delle variabili,
definizione e dichiarazione sono termini coincidenti.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 definizione e dichiarazione sono termini coincidenti.
E se mi trovo di fronte ad un:
    extern int a;
ho sempre una definizione?

ho sempre una definizione?
Una dichiarazione che indica che la definizione della
variabile e' da qualche altra parte.


 definizione e dichiarazione sono termini coincidenti.
Non mi e` chiaro questo punto. Ovvero, una definizione di variabile e` 
anche la sua dichiarazione, mentre non e` vero il contrario--e questo 
dovrebbe valere sia in C che in C++. La seguente, per esempio, e` una 
dichiarazione di variabile che non e` una definizione:
	extern int foo;
Ma forse sono io che non colgo qualche evidenza (e, data l'ora, mi 
giustifico da solo ;) ).
-- 
Baci,
Mony

anche la sua dichiarazione, mentre non e` vero il contrario
Sono stato io poco preciso: il caso di "extern", nel caso
delle variabili, distingue nettamente la dichiarazione dalla
definizione, ma il problema che Eckel cita e' quello dei
termini usati.  Tu parli di "definizione di variabile",
quando comunemente si dice "dichiarazione di variabile".
Cioe', generalmente, si dice "ho dichiarato una variabile
intera, ho dichiarato un array, ho dichiarato un puntatore".
Tutte queste "dichiarazioni" sono, nella realta' dei fatti,
delle "definizioni" di variabili.
Il fatto che una definizione implichi la dichiarazione, ma
non viceversa, e' un altro discorso e vale sia per le
funzioni che per le variabili.

Newsgroup: it.comp.lang.c
Titolo: Come posso spostare il cursore in ANSI C?

Ho bisogno di fare grafica ASCII; utilizzerei la classica printf,
ma ho bisogno di spostare il cursore...
Come faccio?!?!
HELP
NM

 ha scritto nel messaggio
news:3ce3db50...@news.tiscalinet.it...

non credo sia possibile col C standard! prova con librerie non standard tipo
conio(gotoxy) o curses

Come faccio?!?!
Non puoi in ANSI ti serve una libreria apposta per la getione del
terminale. Sotto Dos potresti avere nativamente la conio
(originariamente fornita con i compilatori Borland, ora lo trovi in
quasi tutti) o un porting delle (n)curses (cerca "PD curser" per es.).
Oppure ti scopri quali sono le primitive del DOS per la gestione del
terminale.
-- 
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: esercizio Deitel

Ciao
ho acquistato oggi il libro sul C di Deitel
sembra davero ben fatto, io avevo pure "LA BIBBIA DEL C....come la 
chiamate voi" ma non ci capivo niente hehehe chissa' dopo il Deitel 
magari riusciro' a leggerlo!
comunque a pag.46 c'e' un esercizio
leggere un numero di 5 caratteri e stampare su schermo le singole cifre 
spaziate di 3 caratteri...cioe'
io metto 25468
ed ottengo
2   5   4   6   8
senza usare strutture iterative in quanto ancora non trattate ma solo 
scanf e printf....
a me l'unica cosa con scanf e printf e':
#include<stdio.h>
main(){
int a,b,c,d,e;
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
printf("%d   %d   %d   %d   %d%",a,b,c,d,e);
{
quindi inserisco un numero alla volta
dimenticavo
un consiglio...
sto' per installare su un altro hard disk linux, c'e' molta differenza 
nel programmare in c su W32 e linux?
grazie!

 quindi inserisco un numero alla volta
L'es chiede perň di inserire un unico numero da 5 cifre, non 5 cifre
singolarmente...
Ciao
Daniele

 grazie!
Se impari e lavori in ANSI C no

Newsgroup: it.comp.lang.c
Titolo: funzione elenco parametri variabili

Salve,mi spiegate  tutto sulle funzioni con dichiarazione di elenchi di 
parametri di
lunghezza variabile? 



http://www.die.net/doc/linux/man/man3/stdarg.3.html
Newsgroup: it.comp.lang.c
Titolo: Problema in fase di compilazione.

Ciao a tutti, mi presento sono mario.
L'anno prossimo mi iscriver� all'universit� d'informatica.
Ho visto che nel primo anno ci sar� moltissima programmazione in C. Allora
mi armo di buona volont� e mi metto a studiare e fare qualche prova. Il mio
"testo di riferimento" � Tricky C, ho letto da qualche parte che � una buona
guida, a me lo sembra, magari avete qualcos'altro da consigliarmi. beh, ben
vengano consigli e quant'altro.
Dopo tutto questo preambolo vengo al dunque!
Quando scrivo del codice (sempre se tale lo posso definire, perch� siamo
veramente agli albori) e lo compilo, il programma (Dev C++) lo compila, lo
esegue e parte l'applicazione, ma si apre la finestra e si chiude in un
tempo talmente breve che a volte mi domando se ho cliccato oppure
no....;-)))
il fatto � che non riesco mai a vedere se quello che faccio � giusto oppure
no......sbaglio qualcosa oppure � normale???
Grazie a quanti leggeranno, e magari risponderanno, alla prossima!!!
Mario

no....;-)))
E' normale: l'applicazione viene lanciata in modalit� console di
Windows e quindi alla chiusura del programma la finestra si chiude.
La soluzione pi� spicciola � mettere un:
 system("pause");
poco prima della parentesi chiusa del main(), altrimenti un getchar(),
oppure, se non vuoi scrivere codice che non c'entra con la tua
applicazione, apri una shell, compila da DEV C++ ed esegui da shell.

 tempo talmente breve che a volte mi domando se ho cliccato oppure no.
E' molto probabile che DevC++ abbia un opzione per indicare che la 
finestra non deve essere chiusa, guarda tra le opzioni del progetto (e 
sul manuale).
Altrimenti puoi cambiare IDE (CodeBlocks o perfino VS se usi solo 
Windows), lavorare direttamente da linea di comando (magari usando msys, 
un ottimo sistema per imparare) o mettere alla fine del tuo programma 
l'attesa per un carattere da tastiera (cosa che personalmente "aborro")
R.D.
Newsgroup: it.comp.lang.c
Titolo: gestione pila di char

Vettore di 4 caratteri ("a";"b";"c";"d";) da mandare in stampa video in modo che i caratteri shiftino (tipo pila) a seconda del giorno:
giorno 1:  a b c d,
giorno 2.  b c d a,
giorno 3:  c d a b,
giorno 4:  d a b c,
giorno 5:  a b c d
ecc.
Qualcuno mi dàuna dritta su come impostare il programma?
Grazie


ciao.
 
Tu come hai cominciato ad affrontare il problema? Hai gia' scritto una
bozza, anche se non fa quello che vuoi almeno e' qualcosa su cui
possiamo darti consigli...
 
Io non proverei a spostare i caratteri: terrei l'array fisso e
giocherei sulla rotazione degli indici per cambiare la stampa
giorno per giorno.
 
ciao
Giacomo
 


Ciao Giacomo, grazie per la risposta, il problema è che non mi viene in mente la strategia da adottare. Le due strade potrebbero essere quelle di spostare le stringhe in memoria  usando i puntatori a quelle locazioni, oppure, come suggerisci tu, usare un ciclo che stampi direttamente le variabili nell'ordine voluto utilizzando un opportuno indice. Il problema sembra banale, ma qualsiasi soluzione che mi viene in mente mi sembra troppo complicata, macchinosa e farraginosa.

> qualsiasi soluzione che mi viene in mente mi sembra troppo complicata
 
Una soluzione elegante è usare l'operatore bitwise and, '&'. Non ti
dico come ;P
-- 
andrea - ri mi cci, name


 
oppure il modulo %, che funziona anche per lunghezze del vettore diverse 
da una potenza di 2


#include <stdio.h>
#include <string.h>
#include <time.h>
 
 
void main(void) {
	char* s = "abcd";
	int len = strlen(str);
	time_t t = time(NULL);
	struct tm now = *localtime(&t);
	int i, n;
 
	printf("giorno = %d: ", now.tm_yday);
	for (i = 0, n = now.tm_yday % len; i < len; i++) {
		putchar(s[n]);
		if (++n == len)
			n = 0;
	}
	putchar('\n');
}
 

 if (++n == len)
 
come farsi del male.
 
Ciao Jack

      putchar('\n');
 
void main(void) {
     char* s = "abcd";
     int len = strlen(str);
     time_t t = time(NULL);
     struct tm now = *localtime(&t);
     int i;
 
     printf("giorno = %d: ", now.tm_yday);
     for (i = now.tm_yday % len; i < len + (now.tm_yday % len); i++)
	putchar(s[i % len]);
     putchar('\n');
}

Newsgroup: it.comp.lang.c
Titolo: Dove trovo un compilatore

Dove posso trovare (gratis) un compilatore per iniziare a programmare?
Ho utilizzato un compilatore sotto unix (non so il nome) e il "SAS C" su
amiga, ma non ho mai programmato su PC.
Mi farebbe comodo anche un editor con "i colori" e indentazione automatica.
Meglio se tutto integrato ;-)
Grazie a chi mi auterà
--
Oaic, oaic!
_____________________
Andrea "GeCo" Tommaseo
andre...@inwind.it

www.delorie.com/djgpp
GeCo ha scritto nel messaggio ...

Meglio se tutto integrato ;-)
www.bloodshed.com
e scarichi il dev-c++4.0
Saluti.


www.bloodshed.com
errata corrige...
http://www.bloodshed.net/
Newsgroup: it.comp.lang.c
Titolo: Sviluppo di un motore di ricerca open-source

ciao a tutti ho intenzione di creare un gruppo di lavoro per la
realizzazione di un motore di ricerca open source per chi fosse
interessato 
http://groups.google.it/group/wooghie
qualsiasi commento o suggerimento è ben accetto postate tutto sul
gruppo di google

woo...@gmail.com
 ha scritto:

Spero che tu sia molto creativo perchè il principale problema in questi 
casi è la struttura (hardware e di rete).
Google ha fra le 10000 e le 100000 macchine ... (stimate)
e una banda a di poco mostruosa
Per lo spidering puoi seguire una approccio p2p al limite tipo nutch 
http://lucene.apache.org/nutch/
ma lo spidering è solo l'inizio ...
Newsgroup: it.comp.lang.c
Titolo: correzione Programma

Per favore, mi correggete questo programma e ditemi perche' sbaglio.
grazie a tutto il NG Carlo.
#include<stdio.h>
 main()
{
int x,y;
printf("Immettere un numero: ");
scanf("%d", &x);
printf("Il numero %d è assegnato a %d: ",y=((x>=1) && (x<=20)) ? x:y);







 ha scritto nel messaggio
news:8oq5fm$3s5$1...@nslave2.tin.it...



Credo dovresti anche inizializzare la y.
........e guardando bene nell'ultima printf manca una variabile.
--
   LUNIVERSONONEUSERFRIENDLY
+-----------------------------+
|  
pugg...@labinf2.unica.it
  |
|     
kill...@yahoo.it
      |
|    
kill...@supereva.it
     |
+-----------------------------+


a parte che non hai inizializzato la variabile y, comunque in printf hai
richiesto con %d ......%d  due variabili intere, ma poi scrivi
y = ((x >= 1) && (x <= 20))?x : y
che restituisce o y o x, quindi una sola variabile.
Alberto

 
  return 0;
}
^ Ci vuole la graffa.
--
 Ciao, Bianco.
 Reply to 
luca....@tiscalinet.it

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

Ciao
ï¿œ vero che ogni algoritmo ricorsivo puo' essere sempre convertito in uno 
iterativo?
E che non tutti i problemi sono risolvibili con l'approccio ricorsivo?
grazie

 
Esistono problemi non risolubili quindi in particolare non risolubili da 
un algoritmo ricorsivo.
ecco la dimostrazione
http://it.wikipedia.org/wiki/Problema_della_fermata
Newsgroup: it.comp.lang.c
Titolo: Caratteri accentati in c

Salve sto scrivendo un algoritmo di cifratura, il mio programma legge da 
un file il testo in chiaro. E proprio qui sorge un problema non riesco a 
capire come trattare i caratteri accentati, credo che siano quelli con 
codifica UTF se non sbaglio. 
Sapete consigliarmi qualcosa, per gestire anche questi caratteri.
Grazie Mille a chi volesse aiutarmi


Cerca UTF-8 su internet. Oppure "man utf-8" se hai Linux. Per capire se 
sono UTF-8 oppure ISO-88591-x basta che guardi se i caratteri speciali 
sono lunghi un byte oppure 2.
E.

Newsgroup: it.comp.lang.c
Titolo: Aiuto, come implementare un multigrafo e perchè mi si  blocca il sistema con un ciclo for





Vorrei porvi due domande:


1) Come implementare un multigrafo?


2) Ho un ciclo for che dovrebbe eseguire 100 
iterazioni, però alla 8 (così poco!) mi blocca il sistema.


    Quai possono essere i motivi e 
come intervenire?


 


              
Aiutatemi altrimenti impazzisco



    Quai possono essere i motivi e come intervenire?
Secondo me hai sbagliato il nome della variabile alla
linea 178 del tuo sorgente (che non ho visto).
Scusa la battuta... ma come cavolo si puo' fare a sapere
senza vedere l'ombra di una riga di codice ????
E' quasi come se tu stessi dicendo "Il mio programma
non funziona... secondo voi quale e' il motivo ?"
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

Newsgroup: it.comp.lang.c
Titolo: Processo in background

Dovrei mandare un processo in background usando il C POSIX. In pratica 
dovrei ottenere lo stesso comportamento che si ha con & in bash
Ho effettuato una fork+exec senza mettere il wait sul processo padre. 
Teoricamente mi sembra giusto, ma il comportamento non è esatto in 
quanto non mi viene ritornato il cursore.

 dovrei ottenere lo stesso comportamento che si ha con & in bash
system( "comando &" ) ?
Ciao,
-- 
        Roberto Divia`              Love at first sight is one of the greatest
Dep:PH Bat:53 Mailbox:C02110      labour-saving devices the world has ever seen
Route de Meyrin 385               ---------------------------------------------
Case Postale                                Phone:  
+41-22-767-4994
CH-1211 Geneve 23 CERN                      Fax:    
+41-22-767-9585
Switzerland                                 E-Mail: 
Robert...@cern.ch


daemonize :)
guarda sulla Guida Avanzata alla Programmazione In Linux (gapil). è 
spiegato abbastanza bene come fare quello che ti interessa
Newsgroup: it.comp.lang.c
Titolo: Da puntatore semplice a doppio puntatore!?

Salve e grazie a tutti fin d'ora!!
Il mio problema è questo:
devo portare una funzione da    insertHeap(heap *ph,int id);
             in       insertHeap2 (heap **pph,int *id);
dove heap è una struttura da me dichiarata precedentemente.
Lo faccio e conseguentemente cambio le occorrenze del puntatore semplice tipo
    ph->ele[3]=23;
in (*pph)->ele[3]=23;
Il risultato è SEGMENTATION FAULT!
Ho pensato che assegnamenti del tipo (*pph)->ele[3]=(*pph)->ele[1];
  non hanno, dopo che li cambio,lo stesso effetto di prima.
Che ne dite??
Come posso ovviare se è questo il problema?
ciao,giorgio


ciao,
Non ho capito la tua esigenza di trasformare il puntatore semplice in
doppio...cmq...affinche il tutto funzioni hai necessità di allocare al
doppio puntatore memoria a sufficienza...quindi quando lo passi alla
funzione ovviamente dovrai rivedere la dichiarazione iniziale del
puntatore....se l'hai dichiarato come un array statico dovrai farlo
diventare una matrice es p[k][n],mentre se il puntatore è dinamico dovrai
fare ben due malloc....spero di aver capito il tuo problema......ciao
--------------------------------
Inviato via 
http://usenet.libero.it

Come posso ovviare se è questo il problema?
Se hai:
void myfunc(T *p)
{
    p->m = 2;
}
int main()
{ 
    T *p;
    ...
    myfunc(p);
}
lo trasformi in:
void myfunc(T **p)
{
     (*p)->m = 2;
}
int main()
{ 
    T *p;
    ...
    myfunc(&p);
}
Ovviamente, dò per scontato che il puntatore sia correttamente
allocato.
-- 
Andrea Laforgia
www.geocities.com/andrealaforgia
"640kb of memory should be enough for anyone." -- Bill Gates.
Newsgroup: it.comp.lang.c
Titolo: FAQ 2 - versione definitiva - posizionare il cursore sul video

3b - Come faccio a posizionare il cursore in un punto preciso del video?
Anche in questo caso lo standard C non prevede una funzione adatta. Ancora
una volta bisogna rivolgersi alle estensioni dello specifico compilatore:
sotto DOS:  (Utilizzando i compilatori Turbo C/C++ della Borland o il DJGPP)
void gotoxy(int riga, int colonna) definita in conio.h
Esempio: gotoxy(5,8);
sotto UNIX/LINUX: (Utilizzando le librerie ncurses)    Si usa la funzione:
            int move (int riga, int colonna)  definita in curses.h
Esempio: move(5,8);
Segue un esempio più completo che dimostra l'uso di alcune funzioni delle
librerie ncurses:
#include <curses.h>
#include <unistd.h>
int main(void)
{       int i;
        initscr(); /* inizializza le curses, vedi man ncurses */
        clear(); /* cancella lo schermo */
        move(12,37); /* muove il cursore */
        addstr("test"); /* scrive 'test' */
        refresh(); /* esegue il refresh dello schermo */
        sleep(1); /* aspetta un secondo */
        for(i = 0; i < 20; i++) {
                move(i,i);
                addstr(".");
                refresh();
                sleep(1);        }
        sleep(1);
        endwin(); /* usa endwin() prima di uscire dal programma */
        return 0;}
NB: Ricordatevi di linkare la libreria perché non viene fatto
automaticamente! ( consultare man curses per dettagli )
--
Marco Coppo
University Of Sheffield

         sleep(1);
IMHO, l'ultimo sleep() è ridondante e si potrebbe omettere.
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: Funzioni librerie standard C

Salve,
 
Vorrei sapere se è possibile esportare una funzione presente nella libreria stdio.h in una mia libreria personale, se si come?
 
Grazie in anticipo.

 
 
Bah, dipende cosa vuoi fare/ottenere.
Puoi copiare il codice, linkare alcune lib staticamente, linkare lib a medio
livello per oscurare i problemi di compatiblità, riscrivere tutto.
Senza un background la domanda non ha molto senso.
 
Ciao!

 Ciao!
 
 
 
 
Beh il mi è stato detto che il warning in compilazione sul gets significa che tale funzione verrà tolta dalle librerie a breve, quindi volevo sapere se fosse stato possibile esportarla
Grazie


Costruiscila tu a partire da una getline
 
E prima che qualcuno inizia a dirmi 'ma si va fuori dagli std' rispondo 
subito 'lo so'
 

 subito 'lo so'
 
 
Non ho mai sentito parlare di getline, ma vedendo in internet ho notato che è molto simile alla fgets, per caso sono equivalenti?


Errore mio, è una estensione GNU
Per restare nello std usa fgets o getchar o getc
Newsgroup: it.comp.lang.c
Titolo: radice quarta o simili??

proprio non riesco a trovare la funzione per estrarre una radice diversa da
quella quadrata (sqrt)
mi dite per favore come si chiama?


per fare la radice quarta ti basta fare due volte la radice quadrata...
in generale per estrarre la radice k-esima devi elevare
alla potenza 1/k (o meglio) 1.0/k perche' devi stare attento
che se k e' intero e scrivi 1/k viene fatta la divisione intera
e ottieni (giustamente, ma in questo caso erroneamente) 0 !
La funzione che sta in math.h per l'elevamento a potenza e'
double pow(double x, double y);
che eleva x alla potenza y
quindi per fare la radice, per esempio 5a, di x devi scrivere
radice = pow(x,1.0/5.0);
ciao,
g.

Newsgroup: it.comp.lang.c
Titolo: Differenza tra f() e f(void)

Salve a tutti.
Come da oggetto vorrei capire se esiste una differnza tra questi due modi di
dichiarare una funzione :
f() ed  f(void).
Per caso il compilatore esegue qualche ottimizzazione riguardante lo stack
nel caso f(void) ?


Se hai dubbi (lo standard puo` risultare criptico se non hai un po' di
esperienza) chiedi pure.
Luca
-- 
Home: 
http://kronoz.cjb.net
"I've seen things you people wouldn't believe...
 Attack Ships on fire off the shores of Orion.
 I've watched C-beams glitter in the dark off of Tanhauser Gate.
 All those moments will be lost in time...like tears, in rain.
 Time to die." -- Roy Batty (played by Rutger Hauer)

Newsgroup: it.comp.lang.c
Titolo: Pulire schermo

Chiedo scusa ho un problemino.
Come posso pulire lo schermo in visual C++ sotto WIN XP.
una clrscr() non funziona.
Grazie.
Acrosstheuniverse.


sotto windows potresti provare:
system("cls");
sotto linux non ricordo!
cmq prova a guardare nel database di google e cerca un post di Kronos.
me lo ha suggerito lui e mi aveva dato una soluzione molto piů ortodossa di
quella ke ti ho dato io! :P
ciauzZz

 ha scritto nel messaggio
news:HOPA8.12620$g04....@tornado.fastwebnet.it...


 Grazie č perfetto!!!!
prego!!!!
č la prima volta ke sono utile a qualcuno in questo niuggi!!!!
txs!

sotto linux non ricordo!
Sotto linux system("clear"), che e' un alias per la vera funzione che
provvedera' a cancellare lo schermo. Oppure ricorri alle librerie
proprie della gestione dei terminali.
-- 
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: LIBRERIA CONIO.H

Mi servirebbe la libreria conio.h per UNIX, oppure una libreria che implementi le funzioni clrscr e gotoxy
grazie
-- 
as57...@silab.dsi.unimi.it
s...@mail.dex-net.com

 grazie
usa le curses. (sotto linux, ad es. ci sono le ncurses).
giulio
-- 
Boycott Microsoft: 
http://www.boycott-ms.org/
Newsgroup: it.comp.lang.c
Titolo: Chi sa come ottimizzarlo?

Ciao, dai precedenti so che posso contare sul vostro aiuto.
Devo ottimizzare un codice, cercando di usare meno memoria possibile,
d'altro canto sono costretto ad usare 2 vettori dinamici molto grandi,
inoltre uno č un vettore di struttura a 3 campi: A, B, C. Vorrei cercare
di eliminare uno dei campi della struttura, avete qualche idea su come
poter fare il controllo seguente con una variabile in meno? Io non sono
riuscito a pensare a nient'altro, magari qualcuno con la mente un pň piů
sgombra...!
Grazie 1000.
main
{ inizializzo A=0, B=0, C=0;
  for(condizione)
    { .
      . 
      .
      if ( (A==6) OR ((C==1)&&(B<6)) ) C=1;   
      else if ( (B==6) || ((C==0)&&(A<6)) ) C=0;
      .
      if (C=0) faccio qualcosa;
      .
      if (DIFF<=0) { B++;
                     A=0;
                   }
      else { A++;
             B=0;
           }
      .
      .
      . 
    }
  return 0;
}
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Romeo wrote:
[SNIP]
Ottimizzare un algoritmo puo' essere facile, ottimizzare lo spazio non 
sempre... e soprattutto servono molte piu' informazioni per rispondere :)
Prova a:
- dirci cosa deve fare la porzione di codice che hai postato e quale 
  algoritmo usa
- postare la struttura dati utitilizata e spiegare cosa dovresti 
  rappresentare
-- 
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."

       if (C=0) faccio qualcosa;
faresti meglio a spiegare struttura e algoritmo

 faresti meglio a spiegare struttura e algoritmo
Su questo siamo daccordo.


 conosco modi efficienti per farlo).
io si: lasciar fare ad un buon compilatore ottimizzante.
Newsgroup: it.comp.lang.c
Titolo: errore Linker

errore Linker
Salve,
ho win98 ed il dev c++.
ho scritto un  programma troppo lungo da postare.
L'unico errore di compilazione č:
[Linker error] undefined reference to `inizializza_vettori(double*, double*,
double*, double*, double*, double*, double*, double*, double*, double*,
double*, double*, parametri_elettrici*, int)'
ld returned 1 exit status
Perň non viene indicata alcuna riga del codice in cui si verifichi questo
errore.
"inizializza_vettori()" č una funzione che impiego, descrivo, e dichiaro
come prototipo nello
stesso programma.
Il programma non si linka a niente, eccetto per l'impiego di:
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
Ora io chiedo: alla luce di queste informazioni date, da cosa puň nascere
questo errore di link?
Grazie,
adriano

 nascere questo errore di link?
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >
Newsgroup: it.comp.lang.c
Titolo: RAGA' MI SERVE AIUTO

Salve a tutti,
vi volevo chiedere se qulacuno avesse una guida in c++ da potermi
inviare... grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 inviare... grazie
Ma tu quanto ne sai?
-- 
Luc.

 
so di essere scortese, ma non si tratta di una domanda gia' risposta nelle 
FAQ del ng? E per di + viene postata ogni 2gg...
Scusate,
Giulio
-- 
PGP Key fingerprint = 1A94 043F 1946 7AA9 CB2E  D5ED F83D 2083 25B4 2E27

Newsgroup: it.comp.lang.c
Titolo: Directory di sistema...

come posso ricavarne il PATH?
E già che ci siamo, potreste suggerirmi un modo veloce per sapere se
un dato file esiste?
Grazie di tutto. :-)
               --Please also reply via E-Mail--
                      4169522043485253

 un dato file esiste?
Potresti aprirlo con fopen() e vedere se il risultato è diverso o uguale
a NULL.
EMG

 un dato file esiste?
Prova ad aprirlo in lettura, se il puntatore e' Null significa che il file
non esiste (attento pero' ai locks!)


 
#include <unistd.h>
int access(const char *filename, int flags);	//POSIX, non ANSI, MS VC++:
_access() 
Verifica i permessi di accesso ad un file (e quindi anche l'esistenza):
if (access(filename, F_OK))
  printf("%s non esiste!\n", filename);
else
  ...

> un dato file esiste?
[root@fokhouse /root]# man 2 access | printlines - 7 8
NAME
       access - check user's permissions for a file
SYNOPSIS
       #include <unistd.h>
       int access(const char *pathname, int mode);
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)


Proprio quella intendevo..
Ma il fatto (vi sembrerò idiota) è che non so come utilizzarla!
Cercate di essere clementi. ;-)


you wrote :
#Potresti aprirlo con fopen() e vedere se il risultato è diverso o uguale
#a NULL.
Il problema e' che, anche avendo NULL come risultato, non e' detto che
il file non esista.
Per compilatori come Borland o DJGPP una soluzione e' quella di
utilizzare le funzioni specifiche findfirst()/findnext().
........................................................
.                                                      .
. Andrea Laforgia        (
andrea_...@bigfoot.com
) .
.                                                      .
........................................................

Newsgroup: it.comp.lang.c
Titolo: voglio conoscere la programmazione

Vorrei conoscere la programmazione in C. So appena fare qualche programmino
in visual basic. Chi mi puņ aiutare? Ad esempio cosa posso utilizzare
 testi e compilatori) per iniziare come autodidatta?


Come testo: Kernighan e Ritchie - Il linguaggio C - Seconda edizione
Come compilatore: il DJGPP per MS-DOS all'indirizzo
http://www.delorie.com/djgpp/
.
EMG

 in visual basic. Chi mi può aiutare? Ad esempio cosa posso utilizzare

Newsgroup: it.comp.lang.c
Titolo: come rinominare file?

vorrei rinominare dei files utilizzando il linguaggio c: quale comando
devo utilizzare?


Esiste la funzione rename che puņ aiutarti.
#include <stdio.h>
int rename(const char *oldname, const char *newname);
Prova a dargli un'occhiata.
--
Giorgio Silvestri
DSP/Embedded/Real Time OS   Software Engineer

int rename(const char *oldname, const char *newname);
Occhio che non è standard.  In generale, per questo tipo di
operazioni, è bene affidarsi all'API del proprio sistema operativo.

"Andrea Laforgia" <a.laf...@andrealaforgia.it.invalid> ha scritto nel
messaggio news:fomch2lpvchmffofl...@4ax.com...

Caspita se lo è (dalla documentazione STANDARD ISO C):
7.19.4.2p1  The rename function
Synopsis:
#include <stdio.h>
int rename(const char *oldname, const char *newname);
Description.
...
Eccetera eccetera ...
Se poi esiste qualche altra API migliore è tutto un altro paio
di maniche :-)


di maniche :-)
Be', teoricamente rename(), in quanto standard, dovrebbe poi essere
implementata rifacendosi all'API del sistema operativo, esattamente
come quanto avviene per tutte le altre funzioni di libreria standard.

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

/*setbits ritorna un numero che ha i primi p+1 bit uguali
 a quelli di x, i successivi n bit uguali ai primi n bit di y
 i restabti bit sono quelli di x; il primo bit ha posizione p 0*/
unsigned setbits(unsigned x, int p, int n, unsigned y)
{return ( x & ((~0 << (p+1+n)) | ~(~0 << (p+1))) )
 | ((y<<(p+1)) & ~(~0<<(p+1+n))); }
:-)))))
Ho cercato anche in rete "setbits <stdio>" trovando funzioni di uguale
difficoltà: non ci sarebbe qualcosa di più semplice ?
_________________________________
void stampbin(unsigned x)
{int b;
 char s[100];
 for(b=0; x!=0; x >>=1)
    s[b++]=(char) ((x & 1) ? '1' : '0');
 s[b]='\0';
 for(b-= 1;b!=-1;b--)
                  {printf("%c",s[b]);
                   if(b%4==0) printf(" ");
                  }
 printf("\n");
}

On Wed, 26 Dec , r...@ris.rto (babbonatale) wrote:
void stampbin(unsigned x)
{int b;
 char s[100];
 if(x==0)  printf("0");/*naturalmente*/


difficoltà: non ci sarebbe qualcosa di più semplice ?
...
per setbits una versione piu' facile da capire potrebbe essere...
unsigned setbits(unsined x,int p,int n,unsigned y)
{
  int mask = ( ~(~0 << n) ) << (p+1);
  return (x & ~mask) | ( (y<<(p+1)) & mask );
}
Per la stampa questa dovrebbe andare
  void stampabin(unsigned x)
  {
    unsigned b=~(((unsigned)~0)>>1);
    while(b)
    {
      putchar((x&b) ? '1' : '0');
      b >>= 1;
    }
    putchar('\n');
  }
Oppure (ricorsiva)
  static void stampabin1(unsigned x)
  {
    unsigned y = x >> 1;
    if (y) stampabin1(y);
    putchar(x & 1 ? '1' : '0');
  }
  void stampabin(unsigned x)
  {
    stampabin1(x);
    putchar('\n');
  }
HTH
Andrea

    unsigned b=~(((unsigned)~0)>>1);
non era meglio  b=~( ~( (unsigned)0 ) >>1) ? 

non era meglio  b=~( ~( (unsigned)0 ) >>1) ? 
Credo tu abbia ragione. Forse a questo punto e'
addirittura piu' leggibile
     b = ~(~0U>>1);
Andrea
Newsgroup: it.comp.lang.c
Titolo: Vorrei Capireeeeeeeee!!!

Ciao gente,
sono un newbie del C e della programmazione in generale....... ho creato
questo sorgente ma funziona male (sempre maggiorenne....uffaaaaaaaa).... mi
aiutate?
#include <stdio.h>
main()
{
 unsigned b = 0;
 unsigned a = 17;
 printf(" Quanti anni hai? ");
  b=getchar();
 if (b == a || b < a)
  printf("Sei Minorenne");
 else
  printf("Sei Maggiorenne");
 }
ciao da Chris (non mi sfottete....hihihih)

 aiutate?
Niente di più semplice.
Non solo prendi in input un solo carattere, ma poi fai il confronto con il
suo codice ascii, per cui giustamente il programma ti dice che è maggiore di
17.
Te lo riscrivo un pochino.
#include <stdio.h>
int main()
{
 unsigned b = 0;
 unsigned a = 18;
 printf("Quanti anni hai? ");
 scanf("%u", &b);
 if (b < a)
  printf("Sei Minorenne");
 else
  printf("Sei Maggiorenne");
 return 0;
}
Ciao
--
Alessandro Monti

  if (b == a || b < a)
[...]
io qui ci metterei le parentesi (non sono mai stato forte con le
precedenze):
	if ( (b == a) || (b <= a) )
non l'ho provato ma dovrebbe funzionare.
-- 
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it
 UIN : 43385135

   b=getchar();
Così leggi un singolo carattere e quindi un valore probabilmente
superiore al codice dello spazio (32). Devi invece utilizzare la
funzione scanf():
scanf( "%d", &b );
EMG

 }
    ^^^^^^^^ Hai dichiarato int main ma non ritorni nulla (return 0)
Sbagli perchè b conterrà il codice ASCII della lettera premuta, non un
valore numerico. Ecco il codice funzionante:
#include <stdio.h>
int main()
{
int anni;
printf("Quanti anni hai? ");
scanf("%d", &anni);
if (anni<18)     // La stessa cosa di scrivere if(anni<=17)
  printf("Sei Minorenne");
else
  printf("Sei Maggiorenne");
return 0;
};
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
ICQ: 42227764
---------------------------------------------------------------------------

io qui ci metterei le parentesi
Non servono.
--------------------------------------------------------
* Andrea Laforgia        (
andrea_...@bigfoot.com
) *
--------------------------------------------------------

 non l'ho provato ma dovrebbe funzionare.
Rettifica: if ( b <= a)
Oltre al problema gia' indicato da altri con i tipi.




Newsgroup: it.comp.lang.c
Titolo: Array di puntatori a struttura

Ciao a tutti,
nello studiare puntatori e strutture ho creato qualche piccolo esercizio,
che vi mostro di seguito.
#include <stdio.h>
struct struttura{
 int anni;
 char *nome;
};
int main(void){
 
 struct struttura *vS[2]; 
   printf("Indirizzo di vS[0] %p\n", vS[0]);  
   printf("Indirizzo di vS[1] %p\n", vS[1]);  
  printf("Indirizzo di vS %p\n", *vS+1);
 vS[0]->anni=34;
 vS[0]->nome="Pippo";
 printf("Effettuato il primo assegnamento\n");
  vS[1]->anni=35;
  vS[1]->nome="Pluto";
 printf("Effettuato il primo assegnamento\n");
  printf("Nome: %d",vS[0]->nome);
  printf("Anni: %s",vS[0]->anni);
 
   printf("Nome: %d",vS[1]->nome);
   printf("Anni: %s",vS[1]->anni);
 
   return 0;
 
}
Di seguito riporto ciò che ottengo:
Indirizzo di vS[0] (nil)
Indirizzo di vS[1] 0x38ac80
Indirizzo di vS 0x8
Effettuato il primo assegnamento
Segmentation fault
Come si può osservare vS[0] (equivalente di *vS), cioè il puntatore alla
struttuta, non punta a niente (NULL). Mentre vS[1] effettivamente sembra
puntare a una porzione di area (mi sembra un po' bassa), mentre il il
puntatore a puntatore è memorizzato alla locazione 0x8 (???).
Non capisco cosa sbaglio, in fondo sto utilizzando la stessa aritmetica dei
puntatori che utilizzo nel caso di un array di puntatori a carattere (char
*righe[100]).
Anche se commento le righe:
 vS[0]->anni=34;
 vS[0]->nome="Pippo";
Il programma si blocca comunque alla riga:
 vS[1]->anni=35;
anche se vS[1] sembra puntare a una porzione di memoria.
Ho supposto anche che forse essendo dichiarata all'interno della struttura
un puntatore a char in fase di compilazione non sia possibile definire la
dimensione della struttura... boh non so...
Qual è il mio errore?
Forse devo creare i due oggetti e assegnare l'indirizzo a vS[0] e vS[1]?
Perché?
Grazie infinite.
Mr. Deckard
 

 
Perche' non hai allocato della memoria. Quei puntatori puntano a 
"qualcosa", non sai cosa e dove, ma ci vai a scrivere lo stesso causando 
un segmentation fault.
vS[0]=malloc(sizeof(struttura));
vs[1]=malloc(sizeof(struttura));
/*assegnamenti...*/
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 
Una domanda: come si comporta il compilatore quando fa il sizeof di una
struttura che contiene un membro la cui dimensione non è definibile al
tempo di compilazione (vedi il mio caso), al suo interno c'è un puntatore a
caratte... Forse il puntatore a puntatore viene considerato un'occupazione
di 4 byte? Lo spazio necessario per memorizzare l'indirizzo a cui deve
puntare?
Grazie infinite per la risposta.

 a cui deve puntare?
Bravo. Vedi che ci arrivi da solo, se vuoi. :)
Max

Max M. wrote:

Eh, eh... grazie! ;-)
Mr. Deckard
Newsgroup: it.comp.lang.c
Titolo: Ma insomma un buon libro??? :)

Avevo chiesto qualche riga piů sotto un buon libro per imparare il C, poi
la cosa č degenerata e vi siete scornati a vicenda :)
Avete qualche suggerimento?
Grazie mille!
PS
dai che se poi mi aiutate trovate uno in piů nel mucchio :) nel bene e nel
male...
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 dai che se poi mi aiutate trovate uno in più nel mucchio :) nel bene e nel


 Avete qualche suggerimento?
Hai già programmato qualcosa in vita tua: Linguaggio C, 2a ed.
Kernighan, Ritchie 
Computer? Che, se magna ? Programmare in C, Deitel & Deitel
Saluti,
-- 
         (__)	      | Nicholas Wieland	    |    -     ------------
	 (oo)	      | 
nicholas...@yahoo.it
   |    -    | There's no |
   /------\/ 	      | Debian GNU/Linux / Mac OS X |    -    | place like |
  / |    ||  	       -----------------------------     -    | *GNOME(2)* |
 *  /\---/\           ...."Have you mooed today?"....    -     ------------

 Grazie mille!
Prego,
Riccardo

 secondo molti la "bibbia" di C
Indubbiamente la bibbia del C, il dubbio di molti e' se sia o no 
comprensibile a uno che non ha mai programmato in vita sua (ora non ricordo 
il thread a cui si riferiva coals, ma probabilmente e' la causa per cui non 
ha ricevuto una risposta concorde).
-- 
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."

 Computer? Che, se magna ? Programmare in C, Deitel & Deitel
ROTFL!

Io non ho iniziato da poco tempo (circa 2 mesi) a programmare, prima non
sapevo nemmeno che volesse dire, e ho comprato tutti e due i libri (il K&R e
il D&D) visto che sono i più gettonati. Ho provato a iniziare con il K&R e
finito il primo capitolo ho deciso di lasciare un pò quello per vedere
com'era il D&D. E devo dire che ha proprio ragione Wieland. Con il D&D mi
sono trovato molto meglio, ho capito cose che con il K&R non avevo capito,
si dilunga molto di più, ma senza ripetersi inutilmente. Inoltre è molto più
coinvolgente per uno che è alle prime armi (l'inizio è sembra essere sempre
la parte più noiosa...sommi numeri di quà...li moltipli di là...che palle!
Per uno che inizia è frustrante!); basta prendere in considerazione i
"progetti" che mette come esercizi, ad es al capitolo 12, la sezione
speciale "Costruite il vostro compilatore", che è molto, molto coinvolgente
e interessante, e ovviamente molto utile per la didattica.

> Io non ho iniziato da poco tempo (circa 2 mesi)
Scusate...ho iniziato da poco tempo... :)

 Computer? Che, se magna ? Programmare in C, Deitel >& Deitel
Io sul catalogo APOGEO ho trovato "C Corso di programmazione Deitel &
Deitel", è questo?
Invece quello di Kernighan e Ritchie di che editore è?
Ciao

 Ciao
Ciao,



Grazie mille, ciao ciao
Newsgroup: it.comp.lang.c
Titolo: int random(int)

Ho un problema con la funzione random(), spero non ne abbiate gia'
discusso...
nel mio programma includo stdlib.h e math.h,
il gcc con le opzioni -ansi -Wall mi da questo warning: "implicit
declaration of function random"
mentre se tolgo l'opzione -ansi non compila ma dice "too many arguments to
function random"
questo non succede con l'opzione rand() che pero' non vuole un valore
massimo
potete spiegarmi come mai questo accade e dove e' definita random()? l'ho
trovata in stdlib ma il suo prototipo e' long int random(void);
grazie
Mauro

trovata in stdlib ma il suo prototipo e' long int random(void);
La random() non e' standard (almeno, non l'ho trovata nell'ultimo
draft stampato dallo standard), il fatto che sia definita in stdlib.h
non vuol dire nulla (sui sistemi unix trovi anche la popen() definita
in stdio.h, non per questo e' standard C).
Devi usare la rand(), magari in questo modo, per ottenere un numero
secondo una distribuzione uniforme tra 0 e 1:
<CODE>
float rndn = (double) rand() / RAND_MAX;
</CODE>
A questo punto puoi generare un numero casuale (intero) tra 0 e un
qualsiasi numero intero i in questo modo
<CODE>
int res = (int) (i * rndn);
</CODE>
Nota: ricordati che prima di usare la rand() devi inizializzare il
seed usando la srand().
Il metodo piu' random e' inizializzarlo passandogli come argomento il
valore di ritorno della funzione time(NULL), anche se non e' detto ti
esca un "buon" numero come seed (il caso peggiore e' un numero che e'
potenza di 2).
-- 
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."

 trovata in stdlib ma il suo prototipo e' long int random(void);
La rand fa parte della libreria standard
#eno
 -----= Posted via Newsfeed.Com, Uncensored Usenet News =-----
http://www.newsfeed.com
 - The #1 Newsgroup Service in the World!
-----== 90,000 Groups! - 17 Servers! - Unlimited Download! =-----
 

 in stdio.h, non per questo e' standard C).
ma il parametro -ansi di gcc non compila se il sorgente non e' ansi o da'
solo degli warning in piu'?
per avere un random tra 0 e n non posso dividere per n e tenere il resto?
grazie
Mauro

per avere un random tra 0 e n non posso dividere per n e tenere il resto?
Al massimo puoi farci il modulo per N, perche' il risultato e' meno
casuale (con una maggior probabilita' per certi valori quindi).

Newsgroup: it.comp.lang.c
Titolo: Indirizzo di un array

Come faccio a conoscere l'indirizzo di memoria a partire dal quale viene
memorizzato l'array config_output qui sotto?
Grazie.
typedef struct
         {
         byte pwm_max;
         byte pwm_attuale;
         } config;
config config_output[4];
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 memorizzato l'array config_output qui sotto?
All'interno di un programma, l'indirizzo è semplicemente:
    config_output
... che è la stessa cosa che scrivere:
    &(config_output[0])
Se intendi dire che vuoi conoscere l'indirizzo *fisico* in memoria (ma a che
ti serve!?) corrispondendte al *simbolo* config_output, puoi ottenerlo così:
    printf("%p", config_output);
La direttiva di formattazione %p stampa in genere un numero esadecimale (ma
il formato preciso dipende dal compilatore).
Nota comunque che quel numero varia da un'esecuzione all'altra del
programma. Se l'array è locale (dichiarato cioè dentro una funzione) varia
addirittura da una chiamata all'altra della stessa funzione.
--
Cingar


 programma. 
Sicuramente dipende dall'architettura e dal sistema operativo in uso, ma
se consideriamo quelli piu in uso difficilmente con "%p" otterrai
l'indirizzo *fisico*, quanto piuttosto quello *logico*, che essendo tale,
è lo stesso in ogni esecuzione del programma.
Ciao
Mtx

 ha scritto:

Visto che siamo in tema di pignolerie :)
E` possibile che lo stack-base sia random per rendere piu` difficili
attacchi di tipo buffer overflow.
Luca
-- 
Home: 
http://kronoz.cjb.net
This message will self destruct in 5 seconds.

 l'indirizzo *fisico*, quanto piuttosto quello *logico*,
Vero, vero.
Come si sarà notato, sono uno di quei pochi fortunelli a cui tocca ancora
smazzarsi applicazioni DOS, dove la "ferraglia" non è sepolta sotto decine
di strati d'ovatta. :-)
--
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: Help funzione sottostringa...

Salve a tutti....
ancora una volta, richiedo il vostro aiuto....
Devo scrivere una funzione ricorsiva il cui prototipo è:
int NomeFunz( char *s1, char *s2)
che verifica se s1 è una sottostringa di s2,
e ritorna 1 se è sottostringa, 0 altrimenti.
Ad esempio:
sottostringa ("pippo", "apippop") = 1
sottostringa ("pippo", "apipppo") = 0
sottostringa ("pippo", "apoppop") = 0
sottostringa ("", "pippo") = 1
Aiuto please!!!


int sottostringa(char *s1, char *s2)
{
	return strstr(s2, s1) != NULL;
}
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 - Mostra testo tra virgolette -
Grazie, ma è una funzione per un esercizio di università, e la prof lo
vorrebbe scritto interamente da noi.......potrebbe andar bene lo
stesso??

 stesso??
Ovviamente no. E non e' neanche ricorsivo.
E poi non l'hai fatto tu....
Se non riesci a fare da solo queste
cose come pensi di passare l'esame ?
Prerequisito: avere ben presente come si
manipolano le stringhe, e avere chiaro
a cosa serve il terminatore.
poi:
Cerca di esprimere prima l'algoritmo
ricorsivo a parole, aiutandoti con
degli esempi espliciti.
C'e' piu' di un modo di fare questo
esercizio.
Per esempio, per cercare "topo" in
"astrotopo", potresti prima vedere
se "astrotopo" comincia con "topo".
Se e' cosi' sei a posto, altrimenti
puoi andare a vedere se "topo" e' una sottostringa
di ... etc.etc
poi pensa ai casi particolari,
tipo: se la stringa da cercare e' nulla,
allora e' una sottostringa di qualunque cosa.
poi prova a tradurre tutto in c
poi se non ti riesce prova a postare qui
i tuoi ragionamenti o i tuoi (onesti)
sforzi, che casomai ti si da una mano.
Ma farti il codice cosi' per risolverti
l'esercizio non serve molto.
Se e' solo per vedere un esempio di funzione
ricorsiva allora con google ne trovi
a bizzeffe (bella parola per lo scarabeo...)
se invece hai in programma di imparare qualcosa
ti devi sforzare un po' di testa tua.
ciao,
g.

 cose come pensi di passare l'esame ?
[..]
se vedessi chi ho visto passare io.. ti prenderebbe lo sconforto ;-)
-- 
www.iuz-lab.info

Occhio che la Fachini ti scopre!!! xke chi avresti visto passare?
Newsgroup: it.comp.lang.c
Titolo: DJGPP e Win32

Ciao a tutti
Esiste una libreria per DJGPP 2.03 in c per Win32 ?
ciao
Onof
:)

On Tue, 04 Sep 2001 17:01:19 GMT, 
ono...@yahoo.com
 (Onofrio Panzarino)
wrote:

si che esiste e si chiama RSXNTDJ, dai un'occhiata alle FAQ
--
Rhymes
--------------------------
rhy...@myself.com
http://www.foxhound-games.it
http://embyte.mascanc.net
--------------------------
Linux User #219707

Grazie!
ciao!

Newsgroup: it.comp.lang.c
Titolo: Copia parti di stringhe

Salve a tutti, ho un problema da risolvere:
ho un testo di molte righe in una stringa tipo char*, se volessi trovare una
frase all'interno che inizi con"Ciao..." e che finisca "...a presto!" come
posso ricercarla nella stringa e sostituirla con qualcos'altro?
Grazie

 ha scritto:

Non so cosa intendi per "frase"... Immagino che tu intenda una segmento di
stringa chiuso da un certo "carattere terminatore" deciso da te (per
esempio, il punto esclamativo "!").
Per cercare una stringa dentro un'altra stringa, si usa la funzione strstr()
che trovi nell'header <string.h>.
La strstr() ti fa il lavoro di base: dirti se sono presenti il prefissso
("Ciao") e il suffisso ("a presto!"), e in quale posizione si trobano.
A questo punto sta a te:
   1) controllare che il prefisso preceda il suffisso;
   2) controllare che prefisso e suffisso siano compresi nella stessa "frase"
(per far questo devi controllare che fra i caratteri compresi fra il
prefisso e il suffisso non ci sia il tuo "carattere terminatore");
   3) sapere cosa fare se il prefisso e/o il suffisso mancano o se sono
presenti in piů posizioni.
--
Cingar
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/