1 Отредактировано chum (2010-04-16 11:46:33)

Тема: опять строки в С

Имеется строка char *s, нужно написать ф-цию, которая возвращает char *
и которая удаляет символ исходной строки s, стоящий на i-м месте.

#include <cstdio>
#include <cstring>

using namespace std;

int main()
{
    char *s = new char[12];
    gets();
    int i;
    scanf("%d", &i);
    // здесь должен быть вызов ф-ции
    printf("%s", s);
    return 0;
}

2 Отредактировано alt (2010-04-16 12:41:37)

Re: опять строки в С

// K - номер символа (0-based)
char* erase(char *s, int k)
{
    char *r = s;
    while (*s && k--) s++;
    if (*s)
    {
        char *p = s + 1;
        while (*p) *s++ = *p++;
        *s = 0;
    }
    return r;
}
test

3 Отредактировано KADR (2010-04-16 19:17:03)

Re: опять строки в С

// k - 0-based index
inline char* erase(char *s,int k)
{
    char *ans=new char[strlen(s)];
    memcpy(ans,(string(s).substr(0,k)+string(s).substr(k+1,strlen(s)-k-1)).c_str(),strlen(s));
    return ans;
}

Правда тут надо еще

#include <string>