红星美凯龙好吗:帮我看下这个c++程序

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 03:04:46
怎么有2处错误啊,而且这个程序的实现是怎么回事,帮我解释下,
十分感谢!!

本程序所列函数 replace ( char *s1, char *s2, char *str1, char *str2 )实现将已知字符串 s1 中所有与字符串 str1 相同的字符列时,就把该字符拷贝到字符数组 s2;当从某字符开始能构成一个与字符串 str1 相同的字符列时,就将字符串 str2 的各字符拷贝到字符数组s2,并继续访问字符串 s1 中那个字符列之后的字符,直至字符串 s1 被访问完,字符复制即告结束。

如程序中所列数据,程序运行输出为:

ABCXYZdefg abABCXYZd abab

#include <iostream.h>
#include <stdio.h>
replace (char *s1, char *s2, char *str1, char *str2)
{
char *t0, *t1, *t2;
while ( *s1!='\0' )
{
for (t0=s1, t1=str1;*t1 != '\0' && *t0==*t1 ; t0++, t1++);
{
if (*t1 != '\0')
*s2++ = *s1++;
else
{

for(t1=str2;*t1 != '\0' ;)
{
*s2++ = *t1++ ;
s1 = t0 ;
}
}
}
}
*s2 = '\0';
}
void main( )
{
char s1[ ] ="abcdefg ababcd abab";
char s2[80];
replace(s1, s2, "abc", "ABCXYZ");
printf("%s\n", s2);
}
我的也是奇怪,编译第1下说有2个错,但再点一下编译又好了。
真是奇怪
恩,果然是。能帮我简单说下题目的意思吗?我题目没看懂。。。。
还有,“字符列”是什么,不是字符串吧?

那不是错误 是警告啊!
1.#include <stdio.h>
replace (char *s1, char *s2, char *str1, char *str2)
{
char *t0, *t1, *t2;
在replace的前面加一个void
void replace (char *s1, char *s2, char *str1, char *str2) 第一个警告就没了
2.replace (char *s1, char *s2, char *str1, char *str2)
{
char *t0, *t1, *t2;
while ( *s1!='\0' )
将char *t0, *t1, *t2; 中的*t2去掉,第2个警告也没了。

题目你参考答案再好好看看,我看了半天才看明白题目的意思
实际上就是用ABCXYZ替换输入字符串里的abc。

我的编译器可以编译通过哦!没什么问题啊!

replace (char *s1, char *s2, char *str1, char *str2)
这个的前面要加上返回类型:void 即:
void replace (char *s1, char *s2, char *str1, char *str2)

char *t0, *t1, *t2;
这里的*t2你没用到删掉就行

VC里面的警告只显示一次,所以你说的并不奇怪