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

Funkcja zamieniająca wielkość liter

VPS Starter Arubacloud
0 głosów
746 wizyt
pytanie zadane 30 stycznia 2017 w C i C++ przez mmpat Nowicjusz (190 p.)

Witam.

Mam do napisania funkcje, do której wysyłam łańcuch, ale nie jako string tylko jako tablice charów. Pomimo, że wszystko wydawało mi się poprawnie to tylko funkcja putchar odczytuje łańcuch zamieniony. Printf() nie pokazuje zamienionych łańcuchów, ani w main(), ani w funkcji. Musze używać C, bez stringów, wykorzystując islower(), toupper() itp. Użyłem źle tych funkcji czy może źle przekazałem tablice w argumencie?

#include <clocale>
#include <stdio.h>
#include <ctype.h>

int ZamienZnak(char tab[], int SizeTab)
{
    char c;
    for(int i=0; i<SizeTab; i++)
        {
            c = tab[i];
            if (islower(c)) {c = toupper(c);}
            else c=tolower(c);
            putchar(c);
        };
    printf("\n\n%s\n", tab);
        return 0;
}

int main()
{
    int SizeBuf = 11;
    char buf[SizeBuf]="Ala ma kota";
    ZamienZnak( buf, SizeBuf);
    printf("\n%s", buf);

    return 0;
}

 

komentarz 30 stycznia 2017 przez QizmoPL Stary wyjadacz (11,440 p.)
http://mckmragowo.pl/mck/pliki/programming/clib/?f=tolower mozesz skorzystac z gotowej funkcji ktora zaminia znak na mala litere, ale jest to droga na skroty. Funkcji nie rozpoczynamyy wielka litera
komentarz 30 stycznia 2017 przez mmpat Nowicjusz (190 p.)
Słuszna uwaga - dzięki. Tyle, że mi zależy, abym zrozumiał co zrobiłem źle i dlaczego, gdy przesyłał to do innej funkcji, nie następuje zamiana w main()

1 odpowiedź

0 głosów
odpowiedź 30 stycznia 2017 przez czujek22 Dyskutant (7,670 p.)

Problem leży w przypisaniu w warunkach:

if (islower(c))
              tab[i] = toupper(c); // nie c=toupper(c);

Musisz zamienić łańcuch tab, jak go potem wyświetlasz i ma być zmieniony, tak to tylko zmieniałeś znak c a potem nic z nim nie robiłeś :)

komentarz 30 stycznia 2017 przez QizmoPL Stary wyjadacz (11,440 p.)
to ma sens, nie zworcilem na to uwagi, jescze do autora kilka rad na przyszlosc: zmienne rozpoczynamy mala litera(camelCase), jezeli masz if'a to dajesz nawiasy do obu warunkow, albo do zadnego(jezeli to mozliwe), funkcje delkarujesz na koncu na poczatku dajesz tylko naglowek, zachowujemy ciaglosc w nazwach, albo po angielsku, albo po polsku, nie mieszamy jezykow.

Podobne pytania

0 głosów
1 odpowiedź 214 wizyt
0 głosów
1 odpowiedź 444 wizyt
pytanie zadane 27 kwietnia 2020 w HTML i CSS przez Hipolit Roszkowski Obywatel (1,480 p.)
0 głosów
1 odpowiedź 233 wizyt
pytanie zadane 25 listopada 2018 w HTML i CSS przez Dariusz Hozer Użytkownik (920 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...