#include <stdio.h>
#include <string.h>
#include <conio.h>
char str[100];
int main(void)
{
int i, t, j, len;
printf("Enter string: ");
scanf("%[^\n]ed", str);
len = strlen(str);
str[len] = ' ';
for (t = 0, i = 0; i < strlen(str); i++)
{
if ((str[i] == ' ') && (str[i - 1] == 'd') && (str[i-2]=='e'))
{
for (j = t; j < i; j++)
printf("%c", str[j]);
t = i + 1;
printf("\n");
}
else
{
if (str[i] == ' ')
{
t = i + 1;
}
}
}
}
このプログラムでは、「ed」で終わる単語を挿入する必要があります。ユーザーがedで終わる単語を挿入しなかった場合、「ed with words with ed」のようなメッセージが表示されます。私はこれを追加しようとしました:文字列の最後の文字を検索する
if ((str[i] == ' ') && (str[i - 1] == 'd') && (str[i-2]=='e')=NULL)
printf("There no words with ed");
しかし、それは動作しませんでした。
str [len] = ''; 'を' str [len-1] = ''に変更することから始めます。配列インデックスはCでゼロから始まります。 'str [len] = ''は、ゼロ終端文字をスペースで置き換えるため、未定義の動作につながります。 –
'i'が0のときに' str [i - 1] 'にアクセスすると、未定義の動作にもなります。 –
@WhozCraig 'str'はグローバル変数です。 (strは0で初期化されます) – BLUEPIXY