我制作了一个代码,用于将用户输入的单词插入指定位置的字符串中。例如,如果字符串为:alice wonderland,则单词为in,pos为6,op /应为:alicein wonderland 但是,代码不起作用。你能告诉我这些缺陷吗? 这是代码:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
void main()
{
char str[100],word[50];
int i,len,p,f,w;
clrscr();
cout<<"Enter string"<<endl;
gets(str);
cout<<"Enter word and position"<<endl;
gets(word);
cin>>p;
for(len=0;str[len!='\0';len++);
for(w=0;word[w]!='\0';w++);
for(i=len-1;i>=p-1;i--)
str[i+w]=str[i];
for(i=p-1;f=0;f<w;f++,i++)
str[i]=word[f];
str[len+w-1]='\0';
cout<<"Modified string..."<<endl;
puts(str);
getch();
}
答案 0 :(得分:0)
您提供的代码无法编译。编译代码时遇到问题吗?我将忽略语法错误并指出逻辑错误。将第三个for循环更改为
for(i=len-1;i>=p;i--) // note 'p-1' was changed to 'p'
str[i+w]=str[i];
将第四个for循环更改为
for(i=p;f=0;f<w;f++,i++) // again, note the 'p-1' changed to 'p'
str[i]=word[f];
最后,将str[len+w-1]='\0';
更改为str[len+w]='\0';
您的代码的逻辑错误本质上是一个“off by one”错误。在每种情况下,删除-1应该可以修复错误。