Imię i nazwisko - zamiana na duże litery

0

Dlaczego ta funkcja nie zamienia mi nazwiska na wielką literę?

void toUpper(char *tekst)
{
    int i = 0;
    tekst[0] = (toupper(tekst[0]));
    for(i=1; i<MAX_TEXT-1; i++)
    {
        if(isspace(tekst[i]))
        {
            char c = tekst[i+1];
            tekst[i+1] = toupper(c);
        }
    }
}
0

Sprawdź, czy MAX_TEXT ma wartość taką jaką zakładasz. Kod wygląda ok.

0

No dziwne, ten kod pokazuje mi seg fault :

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

void toUpper(char *tekst)
{
    int i = 0;
    tekst[0] = (toupper(tekst[0]));
    for(i=1; i<strlen(tekst)-1; i++)
    {
        if(isspace(tekst[i]))
        {
            char c = tekst[i+1];
            tekst[i+1] = toupper(c);
        }
    }
}

int main()
{
    char *in = "jan kowalski";
    toUpper(in);
    printf("%s\n", in);
    return 0;
}
0

Bo to char *in = "jan kowalski"; raczej nie jest char * tylko const char*. Nie powinieneś tego modyfikować. Zamień to na char in[] = "..".

Poczytaj tutaj: http://c-faq.com/decl/strlitinit.html

0
void toUpper(char *tekst)
  {
   for(bool sp=true;*tekst;sp=isspace(*(tekst++))) if(sp) *text=toupper(*text);
  }

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