• 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

0 głosów
807 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 792 wizyt
pytanie zadane 13 września 2016 w SQL, bazy danych przez heartagram Obywatel (1,770 p.)
+1 głos
3 odpowiedzi 1,079 wizyt
–1 głos
2 odpowiedzi 486 wizyt
pytanie zadane 4 lutego 2018 w C i C++ przez robertos18 Obywatel (1,120 p.)

93,501 zapytań

142,434 odpowiedzi

322,788 komentarzy

62,938 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

Kursy INF.02 i INF.03
...