Вот текст задачи: Вывести на экран слова исходной строки, встречающиеся в ней только один раз. Например: при вводе "When hunter meets hunter this hunter eats hunter" результат работы программы будет "When meets this eats".
Вот мой код, он работает на онлайн-компиляторах (хоть и с warning-ами), однако при компиляции на компе он не работает. Совсем не могу понять в чем причина, поэтому прошу помощи.
#include #include #include
int main() { char delim[] = ", "; char str[100]; fgets(str, 100, stdin); fflush(stdin); char str2[100], str3[100]; int lw, ls, chk, temp, i, j, lw2; strcpy(str3, str); char *p = strtok(str, delim); do {
Вывести на экран слова исходной строки, встречающиеся в ней только один
раз. Например: при вводе "When hunter meets hunter this hunter eats
hunter" результат работы программы будет "When meets this eats".
Вот мой код, он работает на онлайн-компиляторах (хоть и с warning-ами), однако при компиляции на компе он не работает. Совсем не могу понять в чем причина, поэтому прошу помощи.
#include
#include
#include
int main()
{
char delim[] = ", ";
char str[100];
fgets(str, 100, stdin);
fflush(stdin);
char str2[100], str3[100];
int lw, ls, chk, temp, i, j, lw2;
strcpy(str3, str);
char *p = strtok(str, delim);
do
{
lw2 += strlen(p) + 1;
for(int i = 0; i < lw2; i++)
{
str3[i] = "";
}
if(strstr(str3, p) == NULL)
{
strcat(str2, p);
strcat(str2, " ");
//printf("%s\n", str2);
}
else
{
ls = strlen(str3);
lw = strlen(p);
for(i = 0; i < ls; i++)
{
temp = i;
for(j = 0; j < lw; j++)
{
if(str3[i] == p[j])
i++;
}
chk = i-temp;
if(chk == lw)
{
i = temp;
for(j = i; j < (ls - lw); j++)
str3[j] = str3[j + lw];
ls = ls - lw;
str3[j] = '\0';
}
}
}
strcpy(str, str3);
}while(p = strtok(NULL, delim));
printf("%s\n", str2);
return 0;
}