我輸入文件具有類似的許多臺詞:sscanf未知錯誤?
ATOM 339 OP1 DG D 218 72.270 54.958 23.040 1.00 27.52 O
我想提取的3個座標:72.270 54.958 23.040
從每一行。 我已存儲的每一行作爲一個字符串,並使用以下方法來提取座標:
sscanf(protein[j].c_str(),"%s %s %s %s %s %s %f %f %f",useless1,useless2,useless3,useless4,useless5,useless6,&xCord,&yCord,&zCord);
這裏沒用的是字符串的所有名稱。 這給許多警告和程序崩潰:
warning: format '%s' expects type 'char*', but argument 6 has type 'int'.
warning: cannot pass objects of non-POD type 'struct std::string' through '...'; call will abort at runtime.
問題是什麼?
如果它的輸入字符數組有多個空格而不是一個,sscanf()會崩潰嗎? (爲了消除這種錯誤的可能性,我刪除了輸入文件中的多個空格。)
編輯: 我已經檢查過它們是否爲int的可能性。 (我不是這麼大一個小白)。這是最初的代碼:
string str,useless1,useless2,useless3,useless4,useless5,useless6,useless7,useless8,useless9;
的sscanf是解析任何一個可怕的方式。日內瓦公約應該禁止它的使用。 – 2013-03-10 19:53:26