C++ C++;sscanf实施问题(从文件中读取)

C++ C++;sscanf实施问题(从文件中读取),c++,function,C++,Function,问题在于使用sscanf时。例如,预期结果是->文件输入(一行)10 S teat xyz 11 12->在单独的变量中读取所有整数,在单独的字符变量中读取所有整数。 在我的例子中,所有整数都正确读取。中间的一切都破碎了 检查下面代码中的测试示例。 在这种情况下,我必须使用chars,没有可用于此任务的字符串 我怎样才能让sscanf阅读由(n)个空格分隔的3个单词 正确的格式是number,str,str,str,number,number(始终与文件中的格式相同) 我猜你现在明白了问题,因为

问题在于使用sscanf时。例如,预期结果是->文件输入(一行)10 S teat xyz 11 12->在单独的变量中读取所有整数,在单独的字符变量中读取所有整数。 在我的例子中,所有整数都正确读取。中间的一切都破碎了

检查下面代码中的测试示例。

在这种情况下,我必须使用chars,没有可用于此任务的字符串

我怎样才能让sscanf阅读由(n)个空格分隔的3个单词

正确的格式是number,str,str,str,number,number(始终与文件中的格式相同)

我猜你现在明白了问题,因为这很容易,但是从C++中停顿了,所以是的。问

bool addPerson(char*info){
字符a;
字符b;
字符c;
int-ID;
int-motherID;
内父系;
//示例STR:
//10 S乳头xyz 11 12
//结果
//10 z y x 11 12->所以数字正确
sscanf(信息,“%d%s%s%s%d%d”、&ID、&a、&b、&c、&motherID和&fatherID);
不能使用

语法正确,但语义不正确

使用
%s
作为格式说明符时,需要提供可以存储以null结尾的字符串的位置。
&a
不提供这样的位置

你需要的东西大致如下:

char s[20 + 1]; // Make it large enough for your needs. 1 byte for null character ( '\0' )
sscanf(info, "%20s", s);  // Make sure to provide a number with %s
                          // so you don't read any more than what
                          // s can hold.

我将让您使用上述解释适当地修复您的程序。

%s
提取一个以null结尾的字符串。相应的参数指向一个非常孤独的
char
。这不会很好地结束。
%s
和一个
char
的地址不会很好地工作。如果您认真对待lear++ C++读取关于<>代码> STD::String ,它与(代码)> STD::IsReRAM:“滴<代码> SCANFF())/>代码,开始使用<代码> STD::
char a;
sscanf(info, "%s", &a);
char s[20 + 1]; // Make it large enough for your needs. 1 byte for null character ( '\0' )
sscanf(info, "%20s", s);  // Make sure to provide a number with %s
                          // so you don't read any more than what
                          // s can hold.