Funkcje pracujące na ciągach znaków

Odpowiedz Nowy wątek
2018-04-08 20:41
0

Jestem kompletnym laikiem z języka C. Proszę o pomoc w napisaniu funkcji pracujących na ciągach znaków. Mam takie zadanie:

  • drukuj_stringa - ma wypisać na wyjście standardowe ciąg znaków str z użyciem funkcji putchar(int);
  • dlugosc_stringa - ma zwrócić długość ciągu znaków;
  • dopisz_stringa - ma dopisać ciąg znaków dopisz_mnie na końcu stringa cel. Przy czym tablica cel ma cel_n znaków. Jeżeli cel nie zmieści się w tablicy cel, to należy dopisać tyle znaków z ciągu znaków dopisz_mnie ile się zmieści. Ostatnim dopisanym znakiem musi być znak 0;
  • int_to_string - ma zamienić liczbę x do postaci ciągu znaków i zapisać wynik w tablicy cel. Tablica cel ma długość cel_n znaków. Jeżeli nie wszystkie znaki zmieszczą się w cel to zapisać tyle znaków ile się zmieści;
  • szukaj_w_stringu - funkcja ma zwrócić pozycję pierwszego wystąpienia ciągu znaków szukaj_tego w ciągu znaków szukaj_tutaj. Jeżeli ciąg szukaj_tego nie występuje w ciągu szukaj_tutaj, to funkcja ma zwrócić -1.

Mam zaimplementować następujące funkcje:

void drukuj_string(char *str);
int dlugosc_stringa(char *str);
void dopisz_stringa(char *cel, int cel_n, char *dopisz_mnie);
void int_to_string(char *cel, int cel_n, int x);
int szukaj_w_stringu(char *szukaj_tutaj, char *szukaj_tego);
#include <stdio.h>
#include <string.h>

void drukuj_string(char *str)
{
   int i;
   for(i=0; i<=str[0]; i++){
   if(str[i] !=0) {
   putchar(str[i]);
                 }
   }
}

int dlugosc_stringa(char *str, unsigned int rozmiar)
{
    if (strlen(str) > rozmiar)
        *(str + rozmiar) = '\0';
}

void dopisz_stringa(char *cel, int cel_n, char *dopisz_mnie)
{

}

void int_to_string(char *cel, int cel_n, int x)
{

}

int szukaj_w_stringu(char *szukaj_tutaj, char *szukaj_tego)
{

}

int main()
{
   char *s = "Ala ma kota";
   char p[100] = "Ala";
   char *q = " ma kota";
   char *pusty = "";

   drukuj_string(s); // wypisz za pomoca putchar

   printf(" \nDlugosc stringa: %d\n", dlugosc_stringa(s,20));
   dopisz_stringa(p, 100, q);
   drukuj_string(p);
   szukaj_w_stringu("Ala ma kota", "ma"); // zwroc 4

return 0;
}
edytowany 2x, ostatnio: furious programming, 2018-04-08 20:58

Pozostało 580 znaków

2018-04-08 20:51
kq
0

Ok, w czym jest problem?


Pozostało 580 znaków

2018-04-08 20:52
0

Nie mam pomysłu jak się zabrać za te 3, 4 i 5 funkcję :/

Pozostało 580 znaków

2018-04-08 20:57
kq
0

Może zacznij od napisania drugiej, bo będziesz jej potrzebował.


Pozostało 580 znaków

2018-04-08 21:00
0

druga jest napisana

Pozostało 580 znaków

2018-04-08 21:00
kq
0

Przepraszam. Zacznij od napisania poprawnie drugiej.


Pozostało 580 znaków

2018-04-08 21:04
0

a co w niej jest nie tak?

Pozostało 580 znaków

2018-04-08 21:04
kq
0

dlugosc_stringa - ma zwrócić długość ciągu znaków;

int dlugosc_stringa(char *str, unsigned int rozmiar)
{
    if (strlen(str) > rozmiar)
        *(str + rozmiar) = '\0';
}

Gdzie zwracasz długość przekazanego ciągu znaków?


Pozostało 580 znaków

2018-04-08 21:22
0
#include <stdio.h>
#include <string.h>

void drukuj_string(char *str)
{
   int i;
    for(i=0; i<str[i]; i++)
    {
        if(i!=str[0]){
        putchar(str[i]);
        }
    }
}

int dlugosc_stringa(char *str)
{
int i, j=0;
    for(i=0; i<str[i]; i++)
    {
    if(i!=str[0]) j++;
    }
    return(j);

}
void dopisz_stringa(char *cel, char *dopisz_mnie)
{
int i,j;
    for(i=0; i<cel[i]; i++)
    {
        if(i!=cel[0]){
        putchar(cel[i]);
        }
    }
    for(i=0; i<dopisz_mnie[i]; i++)
    {
        if(i!=dopisz_mnie[0]){
        putchar(dopisz_mnie[i]);
        }
    }
}
void int_to_string(char *cel, int x)
{

}
int szukaj_w_stringu(char *szukaj_tutaj, char *szukaj_tego)
{

}
int main(int argc, char ** argv)
{

   char *s = "Ala ma kota";
   char p[100] = "Ala";
   char *q = " ma kota";
   char *pusty = "";

   drukuj_string(s); // wypisz za pomoca putchar

   printf(" \nDlugosc stringa: %d\n", dlugosc_stringa(s));
   dopisz_stringa(p, q);
   // drukuj_string(p);
   szukaj_w_stringu("Ala ma kota", "ma"); // zwroc 4

return 0;

}

udało mi się 2 i 3 napisać. Do 4 nie mam w ogóle podejścia :/

Pozostało 580 znaków

2018-04-08 21:26
kq
0

I w drukowaniu i w liczeniu masz zły warunek: https://wandbox.org/permlink/biVAFN1AhYD1qaDt

Porównujesz indeks ze znakiem, o co chodzi?


Pozostało 580 znaków

2018-04-08 21:30
0

Teraz lepiej?

#include <stdio.h>
#include <string.h>

void drukuj_string(char *str)
{
   int i;
    for(i=0; i<str[i]; i++)
    {
        if(0!=str[0]){
        putchar(str[i]);
        }
    }
}

int dlugosc_stringa(char *str)
{
int i, j=0;
    for(i=0; i<str[i]; i++)
    {
    if(0!=str[0]) j++;
    }
    return(j);

}
void dopisz_stringa(char *cel, char *dopisz_mnie)
{
int i,j;
    for(i=0; i<cel[i]; i++)
    {
        if(0!=cel[0]){
        putchar(cel[i]);
        }
    }
    for(i=0; i<dopisz_mnie[i]; i++)
    {
        if(0!=dopisz_mnie[0]){
        putchar(dopisz_mnie[i]);
        }
    }
}
void int_to_string(char *cel, int x)
{

}
int szukaj_w_stringu(char *szukaj_tutaj, char *szukaj_tego)
{

}
int main(int argc, char ** argv)
{

   char *s = "Ala ma kota";
   char p[100] = "Ala";
   char *q = " ma kota";
   char *pusty = "";

   drukuj_string(s); // wypisz za pomoca putchar

   printf(" \nDlugosc stringa: %d\n", dlugosc_stringa(s));
   dopisz_stringa(p, q);
   // drukuj_string(p);
   szukaj_w_stringu("Ala ma kota", "ma"); // zwroc 4

return 0;

}

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0