Мне надо сделать инициализацию с ASCIZ-строки и когда я начинаю выводить у меня почему-то выводит ошибку

    #include <iostream>
#include <cstring>
using namespace std;
class String{
char *st;
int n;
public:
    String();
    String (const String&s);
    String&append(const String&s);
    String &searc(const String&s);
    ~String(){
    delete[] st;
    }
    void input();
    void show();
    int quantity();
};
String ::String(){
n = 0;
}
String ::String(const String&s){
n = s.n;
st = new char[n];
strcpy(st,s.st);
}
//Конкатенация//
String & String :: append(const String &s){
char *c = new char[n+s.n];
for(int i = 0; i<n; i++)
    c[i] = st[i];
  for(int i = 0; i<s.n;i++)
    c[i+n] = s.st[i];
  delete [] st;
 st = c;
 n += s.n;
return *this;
}
//Поиск подстроки//
String & String:: searc(const String & s){
char *r = strstr(st,s.st);
if(r != NULL){
    cout<<(int)(r-st);
}
return *this;
}
int String::quantity(){
return strlen(st);
}
void String::input(){
cout<<"Enter n: ";
cin>>n;
for(int i = 0; i<n; i++){
    cin>>st[i];
}
}
void String::show(){
for(int i = 0; i<n; i++){
    cout<<st[i]<<" ";
}
}
int main(){
String a,b;
a.input();
b.input();
cout<<a.quantity()<<endl;
a.append(b);
a.show();
cout<<endl;
a.searc(b);
return 0;
}

Ответы (0 шт):