我输入文件具有类似的许多台词: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