Newsgroup: it.comp.lang.c
Titolo: Problemi con Dev-C++

Ho iniziato a programmare in C e uso "Bloodshed Dev-C++ ver. 4.9.9.1".
Fatto sta che dopo aver compilato questo programmino didattico, tratto
da un ottima guida presa in rete:
#include <stdio.h>
char *string = "Rosso\n";
void main(void)
{
	printf(string);
	*(string+3) = 'p';
	printf(string);
}
quando cerco di avviare l'exe mi si blocca l'esecuzione apparendomi il
solito messaggio "aaa ha causato un errore in aaa.exe. Aaa verrà
chiuso".
Nel debug del dev c++ appare invece: "Il programma ha causato una
violazione di accesso (errore di segmentazione)". Sto ammattendo
perché compilando invede con il vecchio Turbo C della Borland ver. 2.1
(!!!) l'exe generato si esegue senza problemi. Poiché ho anche provato
con il "Visual C++ 6.0" (stesso problema) vi chiedo cortesemente di
farmi capire quel è il mio errore. Grazie mille e vi saluto.

 printf(string);
Pessima tecnica.
printf("%s", string);
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio
news:1118782173.3...@g44g2000cwa.googlegroups.com...
Ho iniziato a programmare in C e uso "Bloodshed Dev-C++ ver. 4.9.9.1".
Fatto sta che dopo aver compilato questo programmino didattico, tratto
da un ottima guida presa in rete:
#include <stdio.h>
char *string = "Rosso\n";
void main(void)
{
printf(string);
*(string+3) = 'p';
printf(string);
}
In realtà hai dichiarto un char* ma non hai allocato lo spazio per contenere
la stringa.
Se ne conosci la dimensioni potresti scrivere:
char string[10];
oppure puoi dichiarare un buffer di char:
char buffer[80];
char *string;
buffer="Rosso\n";
e poi usare la funzione strdup che duplica il contenuto di buffer in string
occupandosi anche dell'allocazione. Il vantaggio è che verrà allocato a
string non la dimensione di buffer, ma la dimensione necessaria a contenere
il reale contenuto di buffer. IN questo caso il numero di caratteri
necessari a contenere "Rosso\n".
Attenzione che quello che avevi fatto tu era di dichiare un puntatore a char
* senza poi allocargli lo spazio. Se fosse stato in un programma più lungo è
probabile che quelle locazioni in cui avevi scritto sarebbe stato allocate a
tua insaputa ad altre variabili o vettori.
Ciao

char * senza poi allocargli lo spazio. 
Vedi sopra: non è così.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Non sei molto coerente!
Ciò che ho scritto nell'altro messaggio è da intendere come: "No, non è
standard, è BSD 4.3" e la funzione citata in quel messaggio NON E' STANDARD
TANTO QUANTO NON LO E' la strdup().
Rileggi meglio.


 Rileggi meglio.
Penso di avere letto bene.
Posix, BSD, SysV non sono standard?
E per favore non rispondere che non e` ANSI! Altrimenti sei OT!
======================================================================
Il newsgroup tratterà del linguaggio C, ideato da Brian W. Kernighan e 
Dennis M. Ritchie.
Il newsgroup tratterà di qualsiasi *dialetto* del linguaggio C, in modo
particolare del vecchio K&R e di quello specificato dall'istituto 
americano ANSI come standard "ANSI X3.159-1989" e ratificato 
dall'istituto internazionale ISO come standard "ISO/IEC 9899:1990". 
Argomenti compresi:
  - Il linguaggio in generale;
  - Gli algoritmi;
  - Le ottimizzazioni;
  - La portabilità;
  - I sistemi di sviluppo.
=======================================================================


 E per favore non rispondere che non e` ANSI! Altrimenti sei OT!
Sei il solito coglione. Prendi le sviste e cominci ad arrampicarti sui
vetri.
Quando io parlo di standard, parlo di standard ISO 9899:1999 (che _NON E'_
ANSI), come il 99% di coloro che frequentano questo gruppo (l'1% è formato
dagli ignoranti come te).
POSIX, BSD e SysV costituiscono altri standard, che nulla hanno a che vedere
con LO standard del linguaggio. E' inutile, oltretutto, che mi citi il
manifesto (che andrebbe peraltro aggiornato al C99), io questo gruppo l'ho
visto nascere e sopratutto non lo puoi tirare in ballo a difesa delle tue
teorie idiote. Quanto ho detto nel mio messaggio è ASSOLUTAMENTE corretto:
la funzione strdup() NON E' standard.



Io sono coglione ma tu sei uno stronzo malcagato.
Ed anche tremendamende ignorante. Qui si parla di C non di standard ISO
9899:1999 E se non sai che questo e` lo standard ansi ripreso dal comitato
ISO non venire a sparare cazzate da stronzetto presuntuoso che non avendo
mai scritto una linea di codice non sa` proprio di cosa sta parlando. Avrai
anche visto nascere il NG ma evidentemente dovro` rimandarti il manifesto
auando avrai imparato a leggere.
Come vedi anche se finora ho cercato di comportarmi da persona educata sono
anche io capace di scendere cosi` in basso al tuo livello. So di essere OT
in questo momento ma visto che non hai il coraggio di presentarti ...
Ciao
Giovanni
--



Io sono coglione ma tu sei uno stronzo malcagato.
Ed anche tremendamende ignorante.  Qui si parla di C non di standard ISO 
9899:1999  E se non sai che questo e` lo standard ansi ripreso dal 
comitato ISO non venire a sparare cazzate da stronzetto presuntuoso che 
non avendo mai scritto una linea di codice non sa` proprio di cosa sta 
parlando.  Avrai anche visto nascere il NG ma evidentemente dovro` 
rimandarti il manifesto auando avrai imparato a leggere.
Come vedi anche se finora ho cercato di comportarmi da persona educata 
sono anche io capace di scendere cosi` in basso al tuo livello.  So di 
essere OT in questo momento ma visto che non hai il coraggio di 
presentarti ...
Ciao


 presentarti ...
ROTFL... idiota, io mi firmo nome e cognome, quando avrai imparato a farlo
anche tu, allora potremo riparlarne.


 linguaggio innanzitutto.
Aggiungo, tra parentesi, che io non ho MAI detto, da NESSUNA parte, che si
debba parlare SOLO dello standard (anche se sarebbe preferibile per problemi
di portabilità), ma del fatto che una o più funzioni NON siano standard. E
questo è indiscutibilmente vero.


Mille grazie per gli utili suggerimenti. Probabilmente la guida che ho
trovato non è così ottima (perlomeno in questo programmino :) ); me
ne potreste indicare una più affidabile possibilmente da reperire in
rete? Mi continuo a chiedere come mai invece il vecchio compilatore
della Borland non ha creato problemi.
Ciao.

 della Borland non ha creato problemi.
Perché è vecchio, perché molto probabilmente non è conforme allo standard,
perché ogni compilatore può avere "estensioni" allo standard.  Insomma,
può dipendere da un mare di motivi.  Ti consiglio di testare i tuoi
programmi con un compilatore aggiornato, vedi il gcc.


 Ti consiglio di studiare il Kernighan&Ritchie...
Intendi: Il linguaggio C. Principi di programmazione e manuale di
riferimento
di Kernighan Brian W.; Ritchie Dennis M. ???
Ciao.

 di Kernighan Brian W.; Ritchie Dennis M. ???
Sě, quello.


"Andrea Laforgia" <x...@xx.xx> ha scritto nel messaggio
news:151Z41Z94Z160Y1...@usenet.libero.it...

Ma come mai in questo messaggio è Giovanni che risponde ad Andrea, ma l'
indirizzo e-mail e il luogo di provenienza sono quelli di Andrea ?
Solo pura curiosità.
Ciao
Morpheus

 Ciao.
Prova a darci un'occhiata. Chi li consiglio' all'epoca
e il sito dove si trovano sono affidabili, ma io non li
ho guardati e non so come siano
http://www.eskimo.com/~scs/cclass/notes/top.html
http://www.eskimo.com/~scs/cclass/int/top.html
http://www.eskimo.com/~scs/cclass/krnotes/top.html
http://cprog.tomsweb.net/
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 vetri.
...Sei meglio delle barzellette....


 ...Sei meglio delle barzellette....
Taci idiota.


 Taci idiota.
Sempre meglio, vai cosi' Laforca


 Sempre meglio
Shhh... silenzio imbecille, torna a parlare di automobili e cazzate varie.


> Shhh... silenzio imbecille, torna a parlare di automobili e cazzate varie.
Tipo tua madre? Ma dai in fondo non e' neanche cara.
A proposito di auto, tu cosa guidi una 126 AHAHAHAHAHAHAHA
andrea_...@bigfoot.com
 ora x...@xx.xx cos'e' il pornoshop dove
bazzica tuo padre


Mille grazie e scusami del ritardo, darò un occhiata ai link;
oltre al Kernighan&Ritchie, mi sono preso anche il Deidel...
ciao