2011-06-20 9 views
0

文字列が:alice wonderland、wordが入っていて、posが6の場合、指定された位置の文字列にユーザーが入力した単語を挿入するコードを作った、op/should: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

C++スタイルの使用を開始する必要があります。これは、拡張子を付けずにヘッダーを含めることを意味します。例えば。 '#include 'と '#include 'です。 'gets()'のような 'stdio.h'の代わりに' cin'、 'cout'、' getline() 'などをあなたのIOに使うべきです。関数の開始時ではなく、使用する直前に変数を宣言する必要があります。また、いくつかの空白(空白行)とコメントは、読者の脳に休憩を与えるためにいいだろう。 –

+0

まずコンパイルエラーを修正したいと思います。 – aib

答えて

0

あなたのコード、提供されているように、コンパイルされません。コードのコンパイルに問題がありますか?私は構文エラーを無視し、論理エラーを指摘します。

for(i=len-1;i>=p;i--) // note 'p-1' was changed to 'p' 
    str[i+w]=str[i]; 

変更

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';に論理エラーを変更、基本的に「オフ一つ」のエラーです。どちらの場合も、-1を削除するとエラーが修正されます。

関連する問題