刚学指针要用指针修改字符串中的小写字母,将其全部转化成大写。字符串的长度不大于98并且只有英文字母。
为什么会runtime error?
#include <iostream>
#include <cstring>
using namespace std;
// 写出两个函数的声明
char * funB(char * str,char** strar);
char* &funA(char ** strar);
int main() {
char a[100], b[100];
for(int i = 0; i < 3; ++i) {
char **p;
cin >> a;
funA(p) = a;
cout << funB(b, p);
}
return 0;
}
char * funB(char * str,char** strar)
{
const int less = 'a'-'A';
int tr = strlen(str);
if (tr>0)
{
for (int i = 0;i<tr;i++) str[i] = '\0';
}
int len = strlen(*strar);
for (int i = 0;i<len;i++)
{
if ((*strar)[i]>='a'&&(*strar)[i]<='z') str[i] = (*strar)[i]-less;
else str[i] = (*strar)[i];
}
return str;
}
char* &funA(char ** strar)
{
return *strar;
}
Run-Time Check Failure #3 - The variable 'p' is being used without being initialized.
int main() {
char a[100] = { 0 }, b[100] = {0};
for (int i = 0; i < 3; ++i) {
char** p = new char*;
cin >> a;
funA(p) = a;
cout << funB(b, p);
}
return 0;
}