Iveは、行の中に "The end"というフレーズを単独で入力するまで、ユーザーがテキスト行を入力できるようにするCプログラムを開発中です。プログラムは、 "is"が出現するたびに "was"という文字列を置き換え、変更の回数を数えます。C言語を使って文字列内の単語を置換するプログラム
これまでのところ、私はいくつかのコードを書いているが、私はそれが正しく機能するために取得する方法で失われた少しを取得しています、今のように、プログラムが
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str[500];// ="- This, a sample string.";
char * pch;
char endTerm[5000];
printf("Enter a string to parse: ");
scanf("%[^\n]",str);
strcat(endTerm, str);
while ((strcmp(str, "the end")) != 0 || (strcmp(str, "the end.")) != 0)
{
scanf("%[^\n]",str);
strcat(endTerm, str);
}
printf ("Your original string was: %s\n\n",endTerm);
pch = strtok (endTerm," ,-");
while (pch != NULL)
{
if ((strcmp(pch, "is")) == 0)
{
pch = "was";
}
else if ((strcmp(pch, "is.")) == 0)
{
pch="was.";
}
printf ("%s ",pch);
pch = strtok (NULL, " ,-");
}
printf("\n\n");
return 0;
}
私にバッファオーバーフローのエラーを与えていますおそらく、ユーザーが終了を入力した場合、プログラムを終了する方法を見つけることができますが、私は本当に単語を置き換えると助けが必要でした。
あなたのコードは非常に多くのコンパイラ警告を生成します。彼らは確かにあなたが持っている問題の源であるので、ここで助けを求める前にそれらのすべてを修正する必要があります。 –
私はXcodeをもう一度チェックし、Xcodeが警告しているコード行を削除しました – brandontod97
まだ基本的なエラーが多すぎます。たとえば、 'strcat(finalString、strcat(" "、pch));' 'finalString'はどこにポイントしていますか?設定されていないので、それを書き込もうとすると未定義の動作になります。 – kaylum