C ++ sscanf空格分隔字符串(C++ sscanf space delimited string)
这是我的练习代码:
int integer_part; char* string_part = (char*)malloc(sizeof(1000)); char* input_string = (char*)malloc(sizeof(1000)+sizeof(int)); cin>>input_string; sscanf(input_string, "%s %d", string_part, &integer_part); printf("scan: %s %d", string_part, integer_part);我正在使用此代码来获取类似于abc 2012输入,但结果将是abc 0
可悲的是,我没有看到问题所在。 有人可以帮我这个吗? 谢谢
Here is my practice code:
int integer_part; char* string_part = (char*)malloc(sizeof(1000)); char* input_string = (char*)malloc(sizeof(1000)+sizeof(int)); cin>>input_string; sscanf(input_string, "%s %d", string_part, &integer_part); printf("scan: %s %d", string_part, integer_part);I am using this code to take input like abc 2012 but the result will be abc 0
Sadly I didn't see where the problem is. Can anyone help me with this a little? thank you
最满意答案
这只读取第一个以空格分隔的字符串:
cin>>input_string;使用这种方式:
cin>> string_part >> integer_part;不要混合C ++和C方式从流中读取。
您可以使用这种方式读取没有空格分隔的字符串:
cin.read ( input_string, sizeof(1000)+sizeof(int) - 1); size_t read_Len = cin.gcount(); input_string[read_Len] = '\0';我可以理解你需要scanf的强大功能来读取给定格式的数据。
This reads only first space delimited string:
cin>>input_string;Use this way:
cin>> string_part >> integer_part;Don't mix C++ and C way of reading from streams.
You can use this way to read string without space delimited:
cin.read ( input_string, sizeof(1000)+sizeof(int) - 1); size_t read_Len = cin.gcount(); input_string[read_Len] = '\0';I can understand you need the power of scanf to read data in a given format.
更多推荐
发布评论