Forum - C/C++
- Segmentation fault , errore non identificato dalla gdb
Pagine: [ 1 2 ]
|
Umberto (Member )
Pro
Messaggi: 156
Iscritto: 27/09/2011
la shell mi da segmentation fault se eseguo questo codice
Codice sorgente - presumibilmente C/C++
if(strcmp(argv[iargv],"cond")==0){
printf("cond");
iargv= iargv + 1;
if(strcmp(argv[iargv],"%")==0){
//printf("varone");
iargv++;
if(strcmp(argv[iargv],"==")==0){
while(strcmp(argv[iargv],vname[tvar])!=0){
tvar++;
}
iargv++;
for(fori = 0;strcmp(argv[iargv],vname[fori])!=0;fori++){
}
if(strcmp(var[tvar],var[fori])==0){
goto ifgo;
}
else{
iargv++;
while(strcmp(argv[iargv],"done")!=0){
iargv++;
}
}
}
}
la gdb mi dice:
Codice sorgente - presumibilmente C/C++
Program received signal SIGSEGV, Segmentation fault.
0x0024d01b in ?? () from /lib/i386-linux-gnu/libc.so.6
Ultima modifica effettuata da Umberto il 22/07/2012 alle 16:15
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
Devi fornire tutto il codice per capire cosa non va. Se non è possibile compilarlo, come si prova?
Mancano tutte le dichiarazioni delle variabili ...
Posta tutto il main e dicci come si dovrebbe usare e in quali condizioni hai avuto l'errore.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
Umberto (Member )
Pro
Messaggi: 156
Iscritto: 27/09/2011
certo scusa :
Codice sorgente - presumibilmente C++
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main( int argc,char * argv[ ] ) {
char vname[ 1000] [ 1000] ;
char var[ 1000] [ 1000] ;
char fname[ 1000] [ 1000] ;
char fun[ 1000] [ 1000] ;
char elecom[ 1000] ;
char eldo[ 100] ;
int ifun = 0 ;
int tfun = 0 ;
int ivar = 0 ;
int ivar1= 0 ;
int iargv = 0 ;
int iargv1 = 0 ;
int tvar = 0 ;
int tvar1;
int iargv2 = 0 ;
int point = 0 ;
int mate1 = 0 ;
int mate2 = 0 ;
int materes = 0 ;
int inf = 0 ;
int fori;
normalgo:
while ( inf== 0) {
tvar = 0 ;
iargv= iargv+ 1 ;
if ( strcmp ( argv[ iargv] ,"end" ) == 0) {
goto endgo;
}
/*if(strcmp(argv[iargv],"mate")==0){
iargv = iargv + 1;
if(strcmp(argv[iargv],"%")==0){
}
else {
}
}*/
if ( strcmp ( argv[ iargv] ,"dif" ) == 0) {
iargv= iargv+ 1 ;
stpcpy( fname[ ivar] ,argv[ iargv] ) ;
iargv1= iargv+ 1 ;
stpcpy( fun[ ivar] ,argv[ iargv1] ) ;
ifun= ifun+ 1 ;
iargv = iargv1;
}
if ( strcmp ( argv[ iargv] ,"fun" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,fname[ tfun] ) ! = 0) {
tfun++ ;
}
//printf("%s", fun[tfun]);
strcpy ( elecom,"base" ) ;
strcpy ( elecom,fun[ tfun] ) ;
iargv++ ;
strcat ( elecom, argv[ iargv] ) ;
system ( elecom) ;
}
if ( strcmp ( argv[ iargv] ,"var" ) == 0) {
iargv= iargv+ 1 ;
stpcpy( vname[ ivar] ,argv[ iargv] ) ;
iargv1= iargv+ 1 ;
stpcpy( var[ ivar] ,argv[ iargv1] ) ;
ivar1= ivar+ 1 ;
iargv = iargv1;
//printf("%s\n",vname[ivar]);
//printf("%s\n",var[ivar]);
}
if ( strcmp ( argv[ iargv] ,"echo" ) == 0 ) {
//printf("in");
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
printf ( "%s\n " ,var[ tvar] ) ;
}
else {
printf ( "%s\n " , argv[ iargv] ) ;
}
}
if ( strcmp ( argv[ iargv] ,"kin" ) == 0) {
printf ( "\n " ) ;
tvar1 = 0 ;
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ) {
tvar1++ ;
}
scanf ( "%s" ,var[ tvar1] ) ;
}
if ( strcmp ( argv[ iargv] ,"write" ) == 0) {
FILE * fp;
iargv++ ;
fp = fopen ( argv[ iargv] ,"w+" ) ;
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
fprintf ( fp,"%s" ,var[ tvar] ) ;
}
else {
fprintf ( fp,"%s" ,argv[ iargv] ) ;
}
}
if ( strcmp ( argv[ iargv] ,"sys" ) == 0) {
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
system ( var[ tvar] ) ;
}
else {
system ( argv[ iargv] ) ;
}
}
if ( strcmp ( argv[ iargv] ,"read" ) == 0 ) {
//printf("in");
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
iargv++ ;
point = atoi ( argv[ iargv] ) ;
iargv++ ;
FILE * read = fopen ( argv[ iargv] ,"r" ) ;
fgets ( var[ tvar] ,point,read) ;
}
if ( strcmp ( argv[ iargv] ,"cond" ) == 0) {
printf ( "cond" ) ;
iargv= iargv + 1 ;
/* quando tento di eseguire
Program received signal SIGSEGV, Segmentation fault.
0x0024d01b in ?? () from /lib/i386-linux-gnu/libc.so.6
*/
if ( strcmp ( argv[ iargv] ,"%" ) == 0 ) {
//printf("varone");
iargv++ ;
if ( strcmp ( argv[ iargv] ,"==" ) == 0) {
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
iargv++ ;
for ( fori = 0 ; strcmp ( argv[ iargv] ,vname[ fori] ) ! = 0 ; fori++ ) {
}
if ( strcmp ( var[ tvar] ,var[ fori] ) == 0) {
goto ifgo;
}
else {
iargv++ ;
while ( strcmp ( argv[ iargv] ,"done" ) ! = 0) {
iargv++ ;
}
}
}
}
//OK
if ( strcmp ( argv[ iargv] ,"$" ) == 0 ) {
//printf("notvarone");
iargv++ ;
if ( strcmp ( argv[ iargv] ,"==" ) == 0) {
iargv++ ;
//printf("in1");
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
iargv++ ;
if ( strcmp ( var[ tvar] ,argv[ iargv] ) == 0) {
goto ifgo;
}
else {
iargv++ ;
while ( strcmp ( argv[ iargv] ,"done" ) ! = 0) {
iargv++ ;
}
}
}
}
}
}
ifgo:
while ( inf== 0) {
tvar = 0 ;
iargv= iargv+ 1 ;
/*if(strcmp(argv[iargv],"mate")==0){
iargv = iargv + 1;
if(strcmp(argv[iargv],"%")==0){
}
else {
}
}*/
/*if(strcmp(argv[iargv],"div")==0){
iargv++;
while(strcmp(argv[iargv],vname[tvar])!=0){
tvar++;
}
iargv++;
ptr = getevn(argv[iargv]);
}
*/
if ( strcmp ( argv[ iargv] ,"dif" ) == 0) {
iargv= iargv+ 1 ;
stpcpy( fname[ ivar] ,argv[ iargv] ) ;
iargv1= iargv+ 1 ;
stpcpy( fun[ ivar] ,argv[ iargv1] ) ;
ifun= ifun+ 1 ;
iargv = iargv1;
}
if ( strcmp ( argv[ iargv] ,"fun" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,fname[ tfun] ) ! = 0) {
tfun++ ;
}
//printf("%s", fun[tfun]);
strcpy ( elecom,"base" ) ;
strcpy ( elecom,fun[ tfun] ) ;
iargv++ ;
strcat ( elecom, argv[ iargv] ) ;
system ( elecom) ;
}
if ( strcmp ( argv[ iargv] ,"var" ) == 0) {
iargv= iargv+ 1 ;
stpcpy( vname[ ivar] ,argv[ iargv] ) ;
iargv1= iargv+ 1 ;
stpcpy( var[ ivar] ,argv[ iargv1] ) ;
ivar1= ivar+ 1 ;
iargv = iargv1;
//printf("%s\n",vname[ivar]);
//printf("%s\n",var[ivar]);
}
if ( strcmp ( argv[ iargv] ,"echo" ) == 0 ) {
//printf("in");
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
printf ( "%s\n " ,var[ tvar] ) ;
}
else {
printf ( "%s\n " , argv[ iargv] ) ;
}
}
if ( strcmp ( argv[ iargv] ,"kin" ) == 0) {
printf ( "\n " ) ;
tvar1 = 0 ;
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ) {
tvar1++ ;
}
scanf ( "%s" ,var[ tvar1] ) ;
}
if ( strcmp ( argv[ iargv] ,"write" ) == 0) {
FILE * fp;
iargv++ ;
fp = fopen ( argv[ iargv] ,"w+" ) ;
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
fprintf ( fp,"%s" ,var[ tvar] ) ;
}
else {
fprintf ( fp,"%s" ,argv[ iargv] ) ;
}
}
if ( strcmp ( argv[ iargv] ,"sys" ) == 0) {
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
system ( var[ tvar] ) ;
}
else {
system ( argv[ iargv] ) ;
}
}
if ( strcmp ( argv[ iargv] ,"read" ) == 0 ) {
//printf("in");
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
iargv++ ;
point = atoi ( argv[ iargv] ) ;
iargv++ ;
FILE * read = fopen ( argv[ iargv] ,"r" ) ;
fgets ( var[ tvar] ,point,read) ;
}
if ( strcmp ( argv[ iargv] ,"done" ) == 0) {
goto normalgo;
}
if ( strcmp ( argv[ iargv] ,"cond" ) == 0) {
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
}
if ( strcmp ( argv[ iargv] ,"$" ) == 0) {
iargv++ ;
if ( strcmp ( argv[ iargv] ,"==" ) == 0) {
iargv++ ;
//printf("in1");
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
iargv++ ;
if ( strcmp ( var[ tvar] ,argv[ iargv] ) == 0) {
goto ifgo;
}
}
}
}
}
endgo:
printf ( "%s\n " ,argv[ 1] ) ;
return 0 ;
}
Errore se :
Codice sorgente - presumibilmente C/C++
./main Fine var a b var b b cond % == a b echo hello done end
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
Il problema sta nel ciclo
Codice sorgente - presumibilmente Plain Text
while(strcmp(argv[iargv],vname[tvar])!=0){
tvar++;
}
che non si conclude mai. Ovviamente, aumentando sempre tvar, finisci per andare oltre il valore massimo di 1000 e sfondare in memoria ...
Inoltre, esistono delle chiamate a stpcpy ovviamente sbagliate (devono essere strcpy ... come fa a compilare?).
E infine tutti quegli array sfondano lo stack ... dovrebbero essere allocate staticamente fuori dal main o dinamicamente.
P.S. Per fare analisi sintattica ci sono regole precise e algoritmi standard ... facendo un codice del genere - che addirittura usa dei goto - potresti avere tantissimi problemi.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
Umberto (Member )
Pro
Messaggi: 156
Iscritto: 27/09/2011
io ho ricompilato il programma per non fare andare al infinito il while e sfondare la memoria ma l' errore persiste.
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
Scusa Umberto ma se scrivi solamente questo non so cosa dirti.
Ovviamente devi dire come hai modificato il codice ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
Umberto (Member )
Pro
Messaggi: 156
Iscritto: 27/09/2011
ho incrementato la variabile iargv
Codice sorgente - presumibilmente C++
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char vname[ 1000] [ 1000] ;
char var[ 1000] [ 1000] ;
char fname[ 1000] [ 1000] ;
char fun[ 1000] [ 1000] ;
char elecom[ 1000] ;
char eldo[ 100] ;
int ifun = 0 ;
int tfun = 0 ;
int ivar = 0 ;
int ivar1= 0 ;
int iargv = 0 ;
int iargv1 = 0 ;
int tvar = 0 ;
int tvar1;
int iargv2 = 0 ;
int point = 0 ;
int mate1 = 0 ;
int mate2 = 0 ;
int materes = 0 ;
int inf = 0 ;
int fori;
int main( int argc,char * argv[ ] ) {
normalgo:
while ( inf== 0) {
tvar = 0 ;
iargv= iargv+ 1 ;
if ( strcmp ( argv[ iargv] ,"end" ) == 0) {
goto endgo;
}
/*if(strcmp(argv[iargv],"mate")==0){
iargv = iargv + 1;
if(strcmp(argv[iargv],"%")==0){
}
else {
}
}*/
if ( strcmp ( argv[ iargv] ,"dif" ) == 0) {
iargv= iargv+ 1 ;
stpcpy( fname[ ivar] ,argv[ iargv] ) ;
iargv1= iargv+ 1 ;
stpcpy( fun[ ivar] ,argv[ iargv1] ) ;
ifun= ifun+ 1 ;
iargv = iargv1;
}
if ( strcmp ( argv[ iargv] ,"fun" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,fname[ tfun] ) ! = 0) {
tfun++ ;
}
//printf("%s", fun[tfun]);
strcpy ( elecom,"base" ) ;
strcpy ( elecom,fun[ tfun] ) ;
iargv++ ;
strcat ( elecom, argv[ iargv] ) ;
system ( elecom) ;
}
if ( strcmp ( argv[ iargv] ,"var" ) == 0) {
iargv= iargv+ 1 ;
stpcpy( vname[ ivar] ,argv[ iargv] ) ;
iargv1= iargv+ 1 ;
stpcpy( var[ ivar] ,argv[ iargv1] ) ;
ivar1= ivar+ 1 ;
iargv = iargv1;
//printf("%s\n",vname[ivar]);
//printf("%s\n",var[ivar]);
}
if ( strcmp ( argv[ iargv] ,"echo" ) == 0 ) {
//printf("in");
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
printf ( "%s\n " ,var[ tvar] ) ;
}
else {
printf ( "%s\n " , argv[ iargv] ) ;
}
}
if ( strcmp ( argv[ iargv] ,"kin" ) == 0) {
printf ( "\n " ) ;
tvar1 = 0 ;
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ) {
tvar1++ ;
}
scanf ( "%s" ,var[ tvar1] ) ;
}
if ( strcmp ( argv[ iargv] ,"write" ) == 0) {
FILE * fp;
iargv++ ;
fp = fopen ( argv[ iargv] ,"w+" ) ;
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
fprintf ( fp,"%s" ,var[ tvar] ) ;
}
else {
fprintf ( fp,"%s" ,argv[ iargv] ) ;
}
}
if ( strcmp ( argv[ iargv] ,"sys" ) == 0) {
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
system ( var[ tvar] ) ;
}
else {
system ( argv[ iargv] ) ;
}
}
if ( strcmp ( argv[ iargv] ,"read" ) == 0 ) {
//printf("in");
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
iargv++ ;
point = atoi ( argv[ iargv] ) ;
iargv++ ;
FILE * read = fopen ( argv[ iargv] ,"r" ) ;
fgets ( var[ tvar] ,point,read) ;
}
if ( strcmp ( argv[ iargv] ,"cond" ) == 0) {
printf ( "cond" ) ;
iargv= iargv + 1 ;
/* quando tento di eseguire
Program received signal SIGSEGV, Segmentation fault.
0x0024d01b in ?? () from /lib/i386-linux-gnu/libc.so.6
*/
if ( strcmp ( argv[ iargv] ,"%" ) == 0 ) {
//printf("varone");
iargv++ ;
if ( strcmp ( argv[ iargv] ,"==" ) == 0) {
iargv++ ;
for ( tvar = 0 ; strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0 ; tvar++ ) {
}
iargv++ ;
for ( fori = 0 ; strcmp ( argv[ iargv] ,vname[ fori] ) ! = 0 ; fori++ ) {
}
if ( strcmp ( var[ tvar] ,var[ fori] ) == 0) {
goto ifgo;
}
else {
iargv++ ;
while ( strcmp ( argv[ iargv] ,"done" ) ! = 0) {
iargv++ ;
}
}
}
}
//OK
if ( strcmp ( argv[ iargv] ,"$" ) == 0 ) {
//printf("notvarone");
iargv++ ;
if ( strcmp ( argv[ iargv] ,"==" ) == 0) {
iargv++ ;
//printf("in1");
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
iargv++ ;
if ( strcmp ( var[ tvar] ,argv[ iargv] ) == 0) {
goto ifgo;
}
else {
iargv++ ;
while ( strcmp ( argv[ iargv] ,"done" ) ! = 0) {
iargv++ ;
}
}
}
}
}
}
ifgo:
while ( inf== 0) {
tvar = 0 ;
iargv= iargv+ 1 ;
/*if(strcmp(argv[iargv],"mate")==0){
iargv = iargv + 1;
if(strcmp(argv[iargv],"%")==0){
}
else {
}
}*/
/*if(strcmp(argv[iargv],"div")==0){
iargv++;
while(strcmp(argv[iargv],vname[tvar])!=0){
tvar++;
}
iargv++;
ptr = getevn(argv[iargv]);
}
*/
if ( strcmp ( argv[ iargv] ,"dif" ) == 0) {
iargv= iargv+ 1 ;
stpcpy( fname[ ivar] ,argv[ iargv] ) ;
iargv1= iargv+ 1 ;
stpcpy( fun[ ivar] ,argv[ iargv1] ) ;
ifun= ifun+ 1 ;
iargv = iargv1;
}
if ( strcmp ( argv[ iargv] ,"fun" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,fname[ tfun] ) ! = 0) {
tfun++ ;
}
//printf("%s", fun[tfun]);
strcpy ( elecom,"base" ) ;
strcpy ( elecom,fun[ tfun] ) ;
iargv++ ;
strcat ( elecom, argv[ iargv] ) ;
system ( elecom) ;
}
if ( strcmp ( argv[ iargv] ,"var" ) == 0) {
iargv= iargv+ 1 ;
stpcpy( vname[ ivar] ,argv[ iargv] ) ;
iargv1= iargv+ 1 ;
stpcpy( var[ ivar] ,argv[ iargv1] ) ;
ivar1= ivar+ 1 ;
iargv = iargv1;
//printf("%s\n",vname[ivar]);
//printf("%s\n",var[ivar]);
}
if ( strcmp ( argv[ iargv] ,"echo" ) == 0 ) {
//printf("in");
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
printf ( "%s\n " ,var[ tvar] ) ;
}
else {
printf ( "%s\n " , argv[ iargv] ) ;
}
}
if ( strcmp ( argv[ iargv] ,"kin" ) == 0) {
printf ( "\n " ) ;
tvar1 = 0 ;
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ) {
tvar1++ ;
}
scanf ( "%s" ,var[ tvar1] ) ;
}
if ( strcmp ( argv[ iargv] ,"write" ) == 0) {
FILE * fp;
iargv++ ;
fp = fopen ( argv[ iargv] ,"w+" ) ;
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
fprintf ( fp,"%s" ,var[ tvar] ) ;
}
else {
fprintf ( fp,"%s" ,argv[ iargv] ) ;
}
}
if ( strcmp ( argv[ iargv] ,"sys" ) == 0) {
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
system ( var[ tvar] ) ;
}
else {
system ( argv[ iargv] ) ;
}
}
if ( strcmp ( argv[ iargv] ,"read" ) == 0 ) {
//printf("in");
iargv++ ;
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
iargv++ ;
point = atoi ( argv[ iargv] ) ;
iargv++ ;
FILE * read = fopen ( argv[ iargv] ,"r" ) ;
fgets ( var[ tvar] ,point,read) ;
}
if ( strcmp ( argv[ iargv] ,"done" ) == 0) {
goto normalgo;
}
if ( strcmp ( argv[ iargv] ,"cond" ) == 0) {
iargv++ ;
if ( strcmp ( argv[ iargv] ,"%" ) == 0) {
}
if ( strcmp ( argv[ iargv] ,"$" ) == 0) {
iargv++ ;
if ( strcmp ( argv[ iargv] ,"==" ) == 0) {
iargv++ ;
//printf("in1");
while ( strcmp ( argv[ iargv] ,vname[ tvar] ) ! = 0) {
tvar++ ;
}
iargv++ ;
if ( strcmp ( var[ tvar] ,argv[ iargv] ) == 0) {
goto ifgo;
}
}
}
}
}
endgo:
printf ( "%s\n " ,argv[ 1] ) ;
return 0 ;
}
Ultima modifica effettuata da Umberto il 22/07/2012 alle 18:15
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
Ma che vuoi dire?
Il ciclo
Codice sorgente - presumibilmente Plain Text
while(strcmp(argv[iargv],vname[tvar])!=0){
tvar++;
}
è lo stesso ... e quindi è ovvio che hai sempre l'errore ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
Umberto (Member )
Pro
Messaggi: 156
Iscritto: 27/09/2011
lo ho sostituito con un ciclo for riga 160 e nella riga 184 il while funziona
Ultima modifica effettuata da Umberto il 22/07/2012 alle 18:27