|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2008
Città: mondovi
Messaggi: 1491
|
Parsing stringa in C
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.. Codice:
#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;
}
__________________
MB: Aw9d-max CPU: E6600 @ 3,32ghz (vcore default 1,275), DDR2 2x1gb 3/4/4/12 @ 2,10V , VGA: POV 8800 GTS 320mb 648/1458/975. RAFFREDDAMENTO A LIQUIDO ARTIGINALE ...Vendo : ROUTER STATION PRO, SISTEMA EMEDDED. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jul 2008
Città: mondovi
Messaggi: 1491
|
Quote:
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. Codice:
scanf("%s",KEY);
showcaroptional(ptr,KEY);
printf("\nConfigurazione... ");
gets(KEYop);
Codice:
gets(KEYop);
scanf("%s",KEY);
showcaroptional(ptr,KEY);
printf("\nConfigurazione... ");
__________________
MB: Aw9d-max CPU: E6600 @ 3,32ghz (vcore default 1,275), DDR2 2x1gb 3/4/4/12 @ 2,10V , VGA: POV 8800 GTS 320mb 648/1458/975. RAFFREDDAMENTO A LIQUIDO ARTIGINALE ...Vendo : ROUTER STATION PRO, SISTEMA EMEDDED. |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12862
|
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). |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2008
Città: mondovi
Messaggi: 1491
|
Grazie ragazzi,
__________________
MB: Aw9d-max CPU: E6600 @ 3,32ghz (vcore default 1,275), DDR2 2x1gb 3/4/4/12 @ 2,10V , VGA: POV 8800 GTS 320mb 648/1458/975. RAFFREDDAMENTO A LIQUIDO ARTIGINALE ...Vendo : ROUTER STATION PRO, SISTEMA EMEDDED. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2267
|
Dopo la scanf prova a mettere:
Codice:
fflush(stdin); Non devi porre: Codice:
printf("\n Intero [%d]",in[j]);
A cosa serve i?
__________________
Concluso con:... Ultima modifica di Floris : 22-09-2011 alle 18:43. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2008
Città: mondovi
Messaggi: 1491
|
Ecco come ho risolto:
Codice:
char *p;
.
.
.
p=strtok(config, " ");
while(p!=NULL){
sscanf(p,"%d",&setup);
// CODICE Che usa la variabile intera setup
p=strtok(NULL," ");
}
__________________
MB: Aw9d-max CPU: E6600 @ 3,32ghz (vcore default 1,275), DDR2 2x1gb 3/4/4/12 @ 2,10V , VGA: POV 8800 GTS 320mb 648/1458/975. RAFFREDDAMENTO A LIQUIDO ARTIGINALE ...Vendo : ROUTER STATION PRO, SISTEMA EMEDDED. Ultima modifica di ciusss89 : 23-09-2011 alle 09:14. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:34.










...









