2017-01-27 7 views
0

私はsscanfを使ってテキストファイルから行を読み込み、その部分を別の変数に保存しようとしています。 テキストファイルには、以下のようになります。sscanf with letters、spaces and integers

name 12345 

だから私は、次のコードを書いている:

sscanf(buffer, "%s %d", name, &number); 

素晴らしい作品が、名前は間にスペースを持っているとき、私は何をしますかこれ?例えば

name lastname 12345 

または偶数?

name the3rd 12345 

この2つの例では、sscanfは機能しません。私は[^]を成功することなく、または%s%[^ 0-9]%dでも使用しようとしましたが、どちらもうまくいきませんでした。

ご協力いただければ幸いです。

+1

'sscanf()'と友人で使用されるフォーマット記述子文字列は決して正規表現ではありません。それは、あなたが見せかけて、疑わしい照明状況であれば似ているかもしれませんが、実際には正規表現ではありません。これらの機能に固有の機能です。 – unwind

+0

情報ありがとう!質問ヘッダーとタグを更新しました。 – BoazKG

答えて

1

問題を解決することを推奨しません。 sscanf()で難しい場合は、おそらくそれが適切な解決策ではありません。

代わりに実際の正規表現を使用するか(手軽に<regexp.h>がある場合)、または手動で解析する手法を使用して最後のスペースを見つけてそれを分割することをお勧めします。結局、strrchr(buffer, ' ');と同じくらい簡単にすることができます。