• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Laczenie tablic znakowych bez uzycia funkcji strcat

VPS Starter Arubacloud
0 głosów
663 wizyt
pytanie zadane 20 grudnia 2016 w C i C++ przez Don Corleone Obywatel (1,210 p.)

Witam, mam za zadanie polaczyc dwie tablice znakow bez uzycia funkcji strcat, po chwili namyslu postanowilem zwrocic sie do Was o pomoc, poniewaz nie za bardzo mi to wychodzi, nie wiem czy kombinuje w dobrym kierunku ale przesylam to co mam.

#include <stdio.h>
#include <stdlib.h>
#define MAX 100
void dodaj(char *str)
{
    char str2[]="mieszka krasnoludek";
    int i;
    for(i=0; str2[i]!=NULL; i++)
    {
        str[i]=str[i]+str2[i];
    }
}

int main()
{
    char *str="Za gorami za lasami";
    dodaj(str);
    printf("%s", str);
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 20 grudnia 2016 przez Buby Pasjonat (19,590 p.)
wybrane 20 grudnia 2016 przez Don Corleone
 
Najlepsza

Twój kod nie ma prawa zadziałać poprawnie, ponieważ dodajesz wartość liczbową znaków - element tablicy znaków, to wartość liczbowa z zakresu 0-255. Zapis str[i] = str[i]+str2[i] oznacza, że nowy znak ma kod sumy dwóch innych, zatem nic dziwnego, że program nie działa tak jak oczekujesz.

Powinieneś rozpocząć od końca pierwszego wyrazu i doklejać kolejne wyrazy. Problem jaki tutaj może wystąpić jest taki, że nie masz pewności, czy dana tablica pomieści sklejony wyraz - o to musisz zadbać w kodzie.

Twój kod może wyglądać tak:

#include <stdio.h>
#include <stdlib.h>
#define MAX 100
void dodaj(char *str)
{
    char str2[]=" mieszka krasnoludek";
    int i;
    int len;
    len = strlen(str);
    for(i=0; str2[i]!=NULL; i++)
    {
        str[len+i] = str2[i];
    }
}
 
int main()
{
    char str[50]="Za gorami za lasami";  //celowo wieksza tablica, aby pomiescic sklejony wyraz
    dodaj(str);
    printf("%s", str);
    return 0;
}

 

Podobne pytania

0 głosów
0 odpowiedzi 559 wizyt
pytanie zadane 13 września 2016 w SQL, bazy danych przez heartagram Obywatel (1,770 p.)
+1 głos
3 odpowiedzi 620 wizyt
–1 głos
2 odpowiedzi 370 wizyt
pytanie zadane 4 lutego 2018 w C i C++ przez robertos18 Obywatel (1,120 p.)

92,774 zapytań

141,698 odpowiedzi

320,532 komentarzy

62,108 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...