帮助在指定位置的字符串中插入单词

时间:2011-06-20 02:22:09

标签: c++

我制作了一个代码,用于将用户输入的单词插入指定位置的字符串中。例如,如果字符串为: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();
}

1 个答案:

答案 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应该可以修复错误。