#include <stdio.h>
#include <iostream.h>
#include <string.h>
int main()
{
char P_input[101];
int Bug_Time[10][4];
int Tot_Time[4];
char rimp[10];
cout<<"Enter Total time:"<<endl;
cin.getline(P_input,100);
cout<<P_input<<endl;
sscanf(P_input, "%d Days - %d - Hours - %d - Minutes - %d Seconds", Tot_Time[0],Tot_Time[1],Tot_Time[2],Tot_Time[3]);
cout<<Tot_Time[0]<<Tot_Time[1]<<Tot_Time[2]<<Tot_Time[3]<<endl;
return 0;
}
返回输出
> Enter Total time:
> 0 Days - 0 - Hours - 26 - Minutes - 56 Seconds //I entered this
> 0 Days - 0 - Hours - 26 - Minutes - 56 Seconds // It showed me this
> 1576 1558 0 7762 //Final cout
有人可以帮我解决这个问题。我希望它显示“0 0 26 56”
答案 0 :(得分:3)
sscanf(P_input, "%d Days - %d - Hours - %d - Minutes - %d Seconds", Tot_Time[0],Tot_Time[1],Tot_Time[2],Tot_Time[3]);
sscanf
函数来自C API,不使用引用。所有参数都按值传递,并且所有整数都未初始化,因此将它们的值传递给sscanf()
并没有任何意义。你需要通过指针传递它们。
答案 1 :(得分:1)
sscanf()
期望int
说明符的{strong>指针为%d
。但是,您没有将指针传递给整数。呼叫需要看起来像这样:
sscanf(P_input, "%d Days - %d - Hours - %d - Minutes - %d Seconds", &Tot_Time[0], &Tot_Time[1], &Tot_Time[2], &Tot_Time[3]);
此外,您的最终cout
不会在数字之间输出空格,就像您说的那样:
cout << Tot_Time[0] << ' ' << Tot_Time[1] << ' ' << Tot_Time[2] << ' ' << Tot_Time[3] << endl;