大家来帮小弟我看看小弟我这段代码错哪了,要输出NULL的时候就会出错
大家来帮我看看我这段代码哪里错了,要输出NULL的时候就会出错
#include <iostream>
#include <cstring>
using namespace std;
char*mystrchr(char*string,char c)
{
int len=strlen(string);
int i;
for(i=0;i<len;i++)
{
if(*(string+i)==c)
return string+i;
}
if(i>=len)
return NULL;
}
int main()
{
char a[100];
char b;
cout<<"请输入被查找的字符串:";
cin>>a;
cout<<"请输入要查找的字符:";
cin>>b;
cout<<b<<"第一次出现的位置为:"<<mystrchr(a,b)<<endl;
system("pause");
return 0;
}
------解决思路----------------------
你的本意是返回一个空字符串吧
------解决思路----------------------
std::cout 输出 char* 类型会按字符串输出,NULL 并非一个有效字符串。
------解决思路----------------------
输出改为printf
另外,你的查找函数为啥返回char*,而不是int(表示第几个字符)
------解决思路----------------------
首先,有这几个问题:
1、打印要求:第一次出现的位置, 为mystrchr函数返回的是char,是查找出的位置所对应的字符;
2、char a[100] 没有初始化,我们不知道编译器会分配给我们一个100个都是0的内存。
3、就像他们所说的, NULL并不是一个有效的字符\字符转哈, 所以不能打印的。
#include <iostream>
#include <cstring>
using namespace std;
char*mystrchr(char*string,char c)
{
int len=strlen(string);
int i;
for(i=0;i<len;i++)
{
if(*(string+i)==c)
return string+i;
}
if(i>=len)
return NULL;
}
int main()
{
char a[100];
char b;
cout<<"请输入被查找的字符串:";
cin>>a;
cout<<"请输入要查找的字符:";
cin>>b;
cout<<b<<"第一次出现的位置为:"<<mystrchr(a,b)<<endl;
system("pause");
return 0;
}
------解决思路----------------------
你的本意是返回一个空字符串吧
return "";
------解决思路----------------------
std::cout 输出 char* 类型会按字符串输出,NULL 并非一个有效字符串。
------解决思路----------------------
输出改为printf
另外,你的查找函数为啥返回char*,而不是int(表示第几个字符)
------解决思路----------------------
首先,有这几个问题:
1、打印要求:第一次出现的位置, 为mystrchr函数返回的是char,是查找出的位置所对应的字符;
2、char a[100] 没有初始化,我们不知道编译器会分配给我们一个100个都是0的内存。
3、就像他们所说的, NULL并不是一个有效的字符\字符转哈, 所以不能打印的。