Sie können formatierte Werte von stdin
mit scanf
Funktion und von String mit sscanf
Funktion lesen. Siehe das vollständige Beispiel unten.
#include <stdio.h>
typedef struct {
int id1;
int id2;
int num;
} gtid_t;
int main(void) {
gtid_t gtid;
// read from stdin
scanf("%d-%d-%d", &(gtid.id1), &(gtid.id2), &(gtid.num));
printf("id1 = %d, id2 = %d, num = %d\n", gtid.id1, gtid.id2, gtid.num);
// read from string
char* str = "4-5-6";
sscanf(str, "%d-%d-%d", &(gtid.id1), &(gtid.id2), &(gtid.num));
printf("id1 = %d, id2 = %d, num = %d\n", gtid.id1, gtid.id2, gtid.num);
return 0;
}
Ausgang wäre als
id1 = 1, id2 = 2, num = 3
id1 = 4, id2 = 5, num = 6
Wie @ DavidC.Rankin in den Kommentaren erwähnen folgt es besser ist, dass die Eingabe erfolgreich war zu überprüfen. Sie könnten if
Aussage wie diese
if(sscanf(str, "%d-%d-%d", &(gtid.id1), &(gtid.id2), &(gtid.num)) != 3) {
fprintf(stderr, "Invalid input: %s\n", str);
}
Als Ergebnis für str
Wert 4-a-6
dieses Beispiel druckt
Invalid input: 4-a-6
Dank Fehler hinzufügen, Sorry, aber ich will es nicht von stdin lesen. Die Zeichenfolge ist bereits als char * str definiert. Und zuerst muss ich prüfen, ob die Zeichenfolge im richtigen Format ist, und sie dann konvertieren. –
@RebeccaTucker meine Antwort hat bereits beide Beispiele mit 'stdin' und mit String definiert als' char * '. – NikolayKondratyev
Oh Danke. Das hilft. Bitte denken Sie, dass es notwendig ist, vor der Konvertierung zu prüfen, ob die Zeichenfolge das richtige Format von x-y-z hat? Ich würde das auch gerne machen. Ich habe am Montag angefangen zu programmieren. Wünsch mir Glück !! –