2016-10-11 25 views
2

からすべての値を見つけることができません文字列の一般的な書式に従って解析する:sscanf_sは、私がどのように見えるテキストの文字列から整数を解析したい文字列

// line = "f 1/2/3 4/5/6 7/8/9" 
int arr1[3], arr2[3], arr3[3]; 

sscanf_s(line.c_str(), "f %d/%d/%d %d/%d/%d %d/%d/%d", 
    &arr1[0], &arr2[0], &arr3[0], 
    &arr1[1], &arr2[1], &arr3[1], 
    &arr1[2], &arr2[2], &arr3[2]); 

奇妙なことに、my arの内容このコードを実行した後の光線は、次のとおりです。

arr1 = { 4, 7, -858993460 }; 
arr2 = { 5, 8, -858993460 }; 
arr3 = { 6, 9, -858993460 }; 

は、これは奇妙な結果の一種である、それは正しくデータにロードしますほとんどのようだが、その後1で左に配列をシフトします。不思議なことに、sscanf_s9を返します。これは、渡された書式を使って9個の一致を見つけたことを示しています。エラーを見つけようとしていますが、コードが間違っているとは本当に分かりません。

答えて

0

はちょうどこのコードにコンパイル:

#include <iostream> 
#include <cstdio> 

using namespace std; 

int arr1[3], arr2[3], arr3[3]; 

int main() 
{ 
    std::string line = "f 1/2/3 4/5/6 7/8/9"; 
    sscanf_s(line.c_str(), "f %d/%d/%d %d/%d/%d %d/%d/%d", 
     &arr1[0], &arr2[0], &arr3[0], 
     &arr1[1], &arr2[1], &arr3[1], 
     &arr1[2], &arr2[2], &arr3[2]); 

    std::cout << "arr1 : " << arr1[0] << ", " << arr1[1] << ", " << arr1[2] << std::endl; 
    std::cout << "arr2 : " << arr2[0] << ", " << arr2[1] << ", " << arr2[2] << std::endl; 
    std::cout << "arr3 : " << arr3[0] << ", " << arr3[1] << ", " << arr3[2] << std::endl; 
} 

を、それが正常に動作します。

+0

私はVSソリューション全体を再構築しましたが、今は正常に動作しているようです...なぜ以前に正しく動作していなかったのか分かりません。あなたの返信をありがとう。 –

関連する問題