返回信息流问题:由键盘输入一段字符串,并输入想要查找出现次数的字符,系统进行遍历并返回该字符出现次数。
代码如下:
#include <iostream>
using namespace std;
void pfound(char a[],char n,int size)
{
int count = 0;
for (int i = 0; i < size; i++)
{
if (a[i] == n)
count++;
};
cout<<count<<endl;
}
int main()
{
char a[] = {0};
char (*pa)=a;//用数组指针记下字符数组a的地址
cout << "请输入一个字符串:";
cin >>a;
int size=sizeof(*(pa));//size表示字符数组a[]的长度 !!!
cout<<size<<endl;//检测数组长度是否被正确求出
cout << endl;
cout << "请输入想查找出现次数的字符:";
char sam; cin >> sam;
pfound(a,sam,size);
}
问题出在感叹号那里———怎么正确求出输入计算机的字符串的长度,int size=sizeof(a[])这个表达式不行,括号里面的数组必须指明长度,但我就是要求长度啊,就套娃了。而int size=sizeof(a)也不对,我一开始还不解,后来意识到了sizeof(a)求的是字符a占的字节,不是数组a[]的.
希望有学长能在原代码基础上进行修改,教教学弟,谢谢了。
如果可以的话,想请问一下学长这个问题用vector怎么解决?
这是一条镜像帖。来源:北邮人论坛 / cpp / #101175同步于 2021/9/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
已解决(谢谢学长学姐们)【问题】c++与数组指针有关的问题
MayDayStan
2021/9/6镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
在你写char a[]={0}的时候这个数组长度应该就固定是1了,随后你往这个数组里写入长点的字符串时实际上应该是越界了。
如果不用string类而维持你目前的C风格字符串的话,应该一开始就预设给a足够的空间,比如char a[100]。获取字符串长度可以用strlen(a)这个函数
既然用c++的话 string或者vector就应该是第一选择 数组我觉得基本可以抛弃了
【 在 MayDayStan 的大作中提到: 】
:问题:由键盘输入一段字符串,并输入想要查找出现次数的字符,系统进行遍历并返回该字符出现次数。
:代码如下:
:#include <iostream>
:using namespace std;
:void pfound(char a[],char n,int size)