c++某程序不能正常运行

来源:百度知道 编辑:UC知道 时间:2024/06/08 00:11:50
请帮我看看为什么这个程序运行不了,谢谢了

#include <iostream.h>

void main()
{
char *a[10],b[10],c[10];
int i;
cout<<"请输入一段文本:"<<endl;
cin>>a[10];
cout<<"请输入你要替换的字:"<<endl;
cin>>b;
cout<<"替换成:"<<endl;
cin>>c;
cout<<"替换后的文本:";
for(i=0;i<10;i++)
{
if (b==a[i])
a[i]=c;
}
for(i=0;i<10;i++)
cout<<a[i]<<" ";

}
一楼的运行之后在替换后的文本末尾会出现乱码..是为什么呢
要怎么改

我不太明白您的题目想要达到的目标:
1.是不是实现替换功能,也就是说,你定义了一个指针数组char *a[10],用来存放一个英文句子。比如输入“I are a boy.”,要替换的是are,替换成am。但由于我的指针并没开始学,只是见到了你的问题后翻了翻书籍,所以我遇到了几个难题:第一个就是char *a[10],的初始化问题。我们书上介绍的只有在定义的时候进行初始化。但接下来的替换又要牵涉到指针,所以我感到吃力。你可以请教别人。
2.看到您对choniong的答案的评价,我猜想你要实现的也许不是1的功能。而是输入一串字符,把这个字符串中的某个字符替换掉就可以了。这个并不牵涉指针。choniong的回答仅仅忽略了一个小问题,那就是您通过键盘对a[10]进行初始化时,也许没有输进去10个字符。例如您只输入了“abcde”,你要把“a”替换成“b”。为了便于说明:
代码一:
#include <iostream.h>
void main()
{
char a[10]="abcde";
int i;
for(i=0;i<10;i++)
cout<<a[i];
}
这串代码,您只给前五个赋了值,系统自动给后面五个赋字符'\0'(空字符或空格字符),输出时,先输出abcde紧接着输出4个空格。这结果我们还可以接受。
但我们往往在遇到与字符串的结束标志有关的问题时通常这样写:
#include <iostream.h>
void main()
{
char a[10]="abcde";
int i;
for(i=0;a[i]!='\0';i++)
cout<<a[i];
}
这样不输出多余的字符了。
再举一个输出乱码的例子:
#include <iostream.h>
void main()
{
char a[10],b,c;
int i;