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

Złe wartości zmiennych w tablicy char; Zmiana wartości w tablicy char po jej przepełnieniu

0 głosów
94 wizyt
pytanie zadane 19 marca 2021 w C i C++ przez jkm9182 Nowicjusz (220 p.)

Poniżej umieściłem kod programu w języku C:

#include <stdio.h>
int main()
{
    char x[20], y[20], z[20];
    do
    {
        printf(" x = ");
        scanf("%s",&x);
        printf(" x - %d\n",strlen(x));
        printf(" x = %s\n",x);
    }
    while(strlen(x)>20); 
   // Gdyby została wprowadzona zbyt duża ilość znaków, podaj wartość zmiennej jeszcze raz
    do
    {
        printf(" y = ");
        scanf("%s",&y);
        printf(" y - %d\n",strlen(y));
        printf(" y = %s\n",y);
    }
    while(strlen(y)>20);
    do
    {
        printf(" z = ");
        scanf("%s",&z);
        printf(" z - %d\n",strlen(z));
        printf(" z = %s\n",z);
    }
    while(strlen(z)>20);
    printf("%s %s %s\n",x,y,z);
    printf(" x - %d, y - %d, z - %d",strlen(x),strlen(y),strlen(z));
    getchar(); getchar();
}

Oraz przykładową odpowiedź programu:


W czerwonej ramce powinno być:
xxxxx yyyyyyy zzzzzzzzz
Pytanie brzmi: Co zrobiłem nie tak, że program zwraca mi złe ciągi znaków? Wystarczy wyjść z pętli do while i zmienne x, y od razu się psują. Dlaczego?

1 odpowiedź

0 głosów
odpowiedź 19 marca 2021 przez Michał Muzyka Pasjonat (24,140 p.)

Dzień dobry,
wydaje mi się, że błądem, który prowadzi do fałszywych wyników jest:

scanf("%s",&x);
scanf("%s",&y);
scanf("%s",&z);

wydaje mi się, że powinno to być tak:

scanf("%s",x);
scanf("%s",y);
scanf("%s",z);

Nazwa tablicy jest wskaźnikiem na pierwszy element, a Pan podaje do funkcji scanf podwójny wskaźnik (addres adresu tablicy)

Podobne pytania

0 głosów
1 odpowiedź 2,117 wizyt
0 głosów
2 odpowiedzi 689 wizyt
pytanie zadane 24 stycznia 2017 w C i C++ przez spvce Początkujący (260 p.)
0 głosów
1 odpowiedź 126 wizyt
pytanie zadane 24 stycznia 2021 w C i C++ przez muzyk Użytkownik (840 p.)

88,701 zapytań

137,308 odpowiedzi

306,748 komentarzy

58,894 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...