#include
#include
#include
using namespace std;
#define Maxsize 100
int main()
{
int i, j = 0;
char str[Maxsize]; char p[Maxsize];
gets_s(str,2);
for (i = 0; str[i] != '\0'; i++)
{
while (isdigit(str[i]))
{
p[j++] = str[i++];
}
for (i = 0; i < 10; i++)
{
cout << p[i];
}
}
}
想了半天了为什么?输入11总会显示错误
因为输了2位,而你gets_s缓冲区就是2,还有\0呢,修改为gets_s(str, Maxsize-1);
#include<iostream>
#include<stack>
#include<stdio.h>
using namespace std;
#define Maxsize 100
int main()
{
int i, j = 0;
char str[Maxsize]; char p[Maxsize];
gets(str);
for (i = 0; str[i] != '\0'; i++)
{
if (isdigit(str[i]))
{
p[j++] = str[i];
}
}
p[j] = '\0';
for (j = 0; p[j] != '\0'; j++)
{
cout << p[j];
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:看个小例子就能理解了
#include <iostream>
#include <string>
using namespace std;
class myClass{
public:
myClass(string name) {
m_name = name;
cout<< m_name << "对象被创建了!" << endl;
}
~myClass() {
cout<< m_name << "对象被析构了!" << endl;
}
string m_name;
};
void func1(){
myClass b("b");
myClass c("c");
throw -1; // 函数1抛出异常
}
void func2() {
myClass a("a");
func1(); // 调用函数1
}
int main()
{
try {
func2(); // 调用函数2
}
catch(int) {
cout << "这里是异常处理!" << endl;
}
return 0;
}
运行结果为: