LINUX.ORG.RU

squeeze(s1, s2) K&R


0

0

№ 2.4(3-е издание) Б.Керниган и Д.Ритчи

напишите функцию squeed(s1,s2), которая удаляет из s1все символы, встречающиеся в строке s2.

Мой вариант:

#include <stdio.h>

void squeeze(int s1[], int s2[]);

int main()

{ int a=40, b=20, c2, c1; /*stroki*/

squeeze( c1[a], c2[b] ); return 0; }

int sqeeze(char s1[], char s2[])

{

int i = 0, j = 0, s = 0;

int vihod; while (s1[i] != '\0')

{ if(s1[i] != s2[j])

vihod[s++] = s1[i++]; }

++j;

}

Как мне кажется все верно. Однако при компиляции ругается:

test.c: In function `main':

test.c:9: error: subscripted value is neither array nor pointer

test.c:9: error: subscripted value is neither array nor pointer

test.c: In function `sqeeze':

test.c:23: error: subscripted value is neither array nor pointer

В чем тут может быть дело?


конечно хочется матюкаться и послать к литературке ;-)

на второй строке опуса видим :

>void squeeze(int s1[], int s2[]);

далее по тексту встречаем int squeeze(char [],char []), не обращая внимания на эту странность смотрим далее :

> int a=40, b=20, c2, c1; /*stroki*/ squeeze( c1[a], c2[b] );

и где это там строки..одни целые ;-) на и так далее..

еще раз внимательно перечитайте главу..первую

anonymous
()

У меня дежавю? По-моему, только недавно обсуждали ту же задачу :)

Selecter ★★★★
()
Ответ на: комментарий от anonymous

1. Стиль форматирования просто ужасный!!!

2.
{ int a=40, b=20, c2, c1; /*stroki*/
squeeze( c1[a], c2[b] ); return 0; } 

Ты объявляешь целочисленные переменные, а не строки, тем более не массивы.

Первую главу надо точно прочитать.

Вот на Си работающий вариант:
#include <stdio.h>
#include <string.h>

void squeeze(char *dest, const char *src, const char *chars_to_remove)
{
    while(*src)
        if (!strchr(chars_to_remove, *src))
            *dest++ = *src++;
        else
            src++;
    *dest = '\0';
}

int main()
{
    char buf[20];
    squeeze(buf, "hello, world", "ello");
    puts(buf);
    return 0;
}

Selecter ★★★★
()
Ответ на: комментарий от Selecter

<string.h> - не спортивно как-то, там же весь смысл чтоб средствами языка реализовать

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.