PDA

View Full Version : Parsing stringa in C


ciusss89
22-09-2011, 16:58
Problema:

Da una stringa composta esclusivamente da numeri e spazi, devo poter "leggere" ogni singolo numero e confrontarlo con un intero. Quello che voglio fare è estrarre l'intero contenuto nella stringa per poter poi eseguire un semplice if.


Help...sn 2 ore che ci sbatto la testa e non..

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(){
char in[100];
int i,j=0;
gets(in);
printf("DIMENSIONE di quello acquisito da tastiera %d, stringa [%s]\n",strlen(in),in);
for(;j<strlen(in);j++){
// parsing code
printf("\n Intero [%d]",i);
}
return 0;
}

Freaxxx
22-09-2011, 16:59
http://www.google.it/search?q=c+atoi

ciusss89
22-09-2011, 17:42
http://www.google.it/search?q=c+atoi


Mi sa che devo aprire un altro topic per un comportamento anomalo di una gets. Praticamente se la metto sotto la scanf viene ignorata

gets non acquisisce nulla, KEYop è vuota. L'esecuzione non è intorrora per chidermi di inserire qlks dalla tastiera.

scanf("%s",KEY);
showcaroptional(ptr,KEY);
printf("\nConfigurazione... ");
gets(KEYop);


Cosi funziona, ma non posso metterlo cosi. Se lo sposto dentro una funzione, viene eseguito. :/

gets(KEYop);
scanf("%s",KEY);
showcaroptional(ptr,KEY);
printf("\nConfigurazione... ");

WarDuck
22-09-2011, 17:47
Dai un'occhiata a strtok e atoi.

Ma attenzione, sono entrambe funzioni un po' bislacche, soprattutto la seconda non è che sia proprio il massimo della correttezza (restituisce 0 se la stringa non è un numero).

ciusss89
22-09-2011, 17:52
Grazie ragazzi, :O.

Floris
22-09-2011, 18:40
Dopo la scanf prova a mettere:
fflush(stdin);
che ha la funzione di svuotare lo stream.
Non devi porre:
printf("\n Intero [%d]",in[j]);
?
A cosa serve i?

ciusss89
23-09-2011, 09:07
Ecco come ho risolto:


char *p;
.
.
.
p=strtok(config, " ");
while(p!=NULL){
sscanf(p,"%d",&setup);
// CODICE Che usa la variabile intera setup
p=strtok(NULL," ");
}


RISOLTO GRAZIE A TUTTI. APRO UN ALTRO POST PER IL L'ALTRO PROBLEMA. LINK (http://www.hwupgrade.it/forum/showthread.php?p=35987803#post35987803)