c++我想写一个从第一个串中删除在第二个串中出现的字符,不知道程序错哪了

#include
#include
using namespace std;
int main()
{
char str1[20]={"hello word"};
char str2[10]={"hi boy"};
int i=0,j=0;
for(i=0;i<20;i++)
{
for(j=0;j<10;j++)
{
while((str1[i]!='\0')&&(str2[j]!='\0'))
if(str1[i]==str2[j])
str1[i]=' ';

    }
}
for(i=0;i<20;i++)
    cout<<str1[i]<<endl;


return 0;

}

for(i=0;i<20;i++)
{
for(j=0;j<10;j++)
{
while((str1[i]!='\0')&&(str2[j]!='\0'))
if(str1[i]==str2[j])
str1[i]=' ';
}
}
while循环是不是有问题?还有我没有听懂你的问题是什么?

删除第一个串中与第二个串相同的字母

我也觉得循环有问题不知道应该怎么改

每次从第二个中取一个字符,和第一个遍历比较一下, 一样就删了,在读下一个字符,到读完第二个字符串结束,这是可以完全删除干净,但效率比较低的方法

可能是头文件错了#include
#include
#include

首次答题

#include

using namespace std;

int main()
{
char str1[20]={"hello word"};
char str2[10]={"hi boy"};

int i,j;
for(i=0;i<20;i++)
{
for(j=0;j<10;j++)
    {
while((str1[i]!='\0')&&(str2[j]!='\0'))
{
if(str1[i]==str2[j])
    {
    str1[i]=' ';
    break;
    }
else
    {
    str1[i]=str1[i];
    break;
    }
}
    }
}
for(i=0;i<20;i++)
    cout<<str1[i]<<endl;


return 0;

    你的while循环没有设置跳出的条件,所以就死循环在while里面了

while 语句多余的吧?

把while语句去掉,改成
if(str1[i]==str2[j]){
str1[i]="";
break;
}

在这里由于对于不是数组尾部的i和j,while语句会陷入死循环。