我的输入文件有很多类似于:
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.
问题是什么?
如果输入 char 数组有多个空格而不是一个空格,sscanf() 也会崩溃吗?(为了消除此错误的可能性,我删除了输入文件中的多个空格。)
编辑:我首先检查了它们是整数的可能性。(我不是那么大的菜鸟。)这是初始代码:
string str,useless1,useless2,useless3,useless4,useless5,useless6,useless7,useless8,useless9;