PDA

Visualizza la versione completa : [C]problemi con formattazione stringa


JavaFurbix
26-05-2010, 14:01
salve a tutti , ho qualche problemino con le stringhe ... l'obiettivo del programma :

- Chiede all'utente di digitare una riga contenente due numeri.
- Legge da tastiera la riga e la memorizza in una stringa.




#include <stdio.h>


int main(void)
{

char c[20];

int a,b;
printf("Inserisci numeri su una riga:");
scanf("%s",c);
printf("OK, ho letto la stringa!\n");
sscanf(c, "%d %d",&a,&b);
printf("A : %d\n", a);
printf("B : %d\n", b);



return ;


}




Inserisci numeri su una riga:56 78
OK, ho letto la stringa!
A : 56
B : 9057060


Come risolvo questo problema ? Penso sia la lettura "sporca" da input o dall'array ...

google01
26-05-2010, 14:18
La funzione scanf acquisisce sino al primo spazio che incontra.
Utilizza:


fgets(c, 20, stdin);

simo_us
26-05-2010, 14:19
Puoi usare una sprintf..
Forse ho detto una cavolata e mi sono confuso.. :spy:

JavaFurbix
26-05-2010, 14:28
Originariamente inviato da google01
La funzione scanf acquisisce sino al primo spazio che incontra.
Utilizza:


fgets(c, 20, stdin);




char c[20]

int a,b;
printf("Inserisci numeri su una riga:");
//scanf("%s",c);
fgets(c,20,stdin);
printf("OK, ho letto la stringa!\n");
sscanf(c, "%d %d",&a,&b);
printf("A : %d\n", a);
printf("B : %d\n", b);



return ;

Ok, grazie, cos funziona...
Ragazzi scusatemi sono un p arrugginito ma le caratteristiche delle funzioni stdio.h dove posso leggerle? Nel senso tipo il fatto che scanf si ferma al primo spazio bianco che incontra.... Linkatemi o indirizzatemi... (solo e esclusivamente man) ??

Grazie

simo_us
26-05-2010, 14:32
In effettti ha ragione google01:

#include <stdio.h>

int main(void)
{
char c[20];
int a,b;
printf("Inserisci numeri su una riga:");
fgets(c, 20, stdin);
printf("OK, ho letto la stringa!\n");
sscanf(c, "%d %d",&a,&b);
printf("A : %d\n", a);
printf("B : %d\n", b);

return 0;

}

Output


Inserisci numeri su una riga:90 98
OK, ho letto la stringa!
A : 90
B : 98

JavaFurbix
26-05-2010, 17:23
Vero... :)


Scusatemi dove posso leggere le catteristiche delle funzioni stdio.h e string.h? Nel senso tipo il fatto che scanf si ferma al primo spazio bianco che incontra.... Linkatemi o indirizzatemi... (solo e esclusivamente man) ??

simo_us
26-05-2010, 21:27
Guarda, il meglio che puoi fare cercare il pacchetto glibc e le trovi qui:
http://www.icewalkers.com/download/glibc/1282/dls/
Non guardare i files headers, cerca quelli con l'estensione .c che alla fine sono quelli che compilati tramite ./configure e make costituiscono le librerie condivise, ossia con le implemtazioni di fgets, printf, scanf, fork etc....
Scegli il Direct Download, il file glibc-2.11.2.tar.gz e all'interno trovi sia headers che implementazioni ovviamente.
:ciauz:

Loading