Lassen Sie uns sagen, dass ich eine Liste von Elementen aus der Standardeingabe erwarten, die kaufen Kommas getrennt sind, wie folgt aus:Kann scanf ein Formatzeichen innerhalb einer Zeichenkette identifizieren?
item1, item2, item3,...,itemn
und ich möchte auch den Benutzer ermöglichen, Weißräume zwischen den einzelnen Posten und Komma zu emittieren, so diese Art der Eingabe ist in meinem Programm legal:
item1,item2,item3,...,itemn
Wenn ich scanf
wie folgt verwenden:
scanf("%s,%s,%s,%s,...,%s", s1, s2, s3, s4,...,sn);
es wird scheitern, wenn t Hier sind keine Leerzeichen (ich habe es getestet), weil es sich auf die gesamte Eingabe als eine Zeichenfolge bezieht. Wie kann ich dieses Problem nur mit C-Standard-Bibliotheksfunktionen lösen?
Verwenden Sie strtok_r(), um Wiedereintrittsprobleme zu umgehen. Wenn Ihre Plattform nicht über strtok_r() verfügt, gibt es hier eine Public-Domain-Implementierung: http://snipplr.com/view/16918/strtokr/ –