我已经采用的sprintf()如下格式化的字符串:在C++中使用sprintf()和sscanf()时出现意外的行为?
int wValue = 1;
ostringstream ossi1;
ossi1 << "messageContent";
std::string orinal = "this is la large string \n
containin large content separated \n
by newline character"
char buff[50000] = {};
sprintf(buff, "What: %d @ Message: %s @ Detail: %s", wValue, ossi1.str().c_str(), orinal.c_str());
std::string myString(buff);
一些操作 即时得到炭后*如下:
char* varCharPointer = myString.c_str();
和我试图使用的sscanf该字符串分开()如下:sscanf的的
int varWhat;
char* strMesg = NULL;
char* strCall = NULL;
if(sscanf(varCharPointer, "What: %d @ Message: %s @ Detail: %s", &varWhat, strMesg, strCall) == 3)
{
// here tried to print the values of varWhat, strMesg and strCall but
// im aunable to print/get that value.
}
返回值()必须是3,但它给1.凡告诉我什么是对上述unexpec的原因特德的行为? 在此先感谢。
几乎同一主题的创建4小时回来同一用户:可能的重复【如何获得字符串的总含量?(HTTP:/ /stackoverflow.com/questions/8118834/how-to-get-total-content-of-string) – Nawaz
纳瓦兹主题是相同的,但即时获得意外的结果在上述情况。所以请从上面的问题帮助我。 – BSalunke
你不能使用'scanf'和它的喜欢把字符串变成像这样的未分配的指针。您必须为字符串分配内存,或将它们定义为空数组。如果你使用格式说明符'%as',Linux中的标准库确实有'scanf'的扩展名。 –