3

私は構造体を持っています:

typedef struct entry {
char *surname;
int house_no;
char *postcode;
} BEntry;

文字列を大文字に変換する関数:

void toUpper(char *str){
    while (*str != '\0')
    {
        *str = toupper(*str);
        str++;
    }
}

私のメイン関数では、値を構造体メンバーに割り当て、姓を大文字に変換したいと考えています。

mentry->surname = "bob";
mentry->house_no = 17;
mentry->postcode = "GK116BY";
toUpper(me->surname);

このような関数に char ポインターを渡して、文字列を大文字に変換する正しい方法は何ですか? プログラムがセグメンテーション違反を返しています。どんな助けでも大歓迎です、ありがとう。

4

3 に答える 3

1

char *c で小文字または大文字に変換する最も簡単な方法は、strdup

#include <string.h>

char    *to_uppercase(char *s)
{
    int i = 0;
    char    *str = strdup(s);

    while (str[i])
    {
        if (str[i] >= 97 && str[i] <= 122)
            str[i] -= 32;
        i++;
    }
    return (str);
}
于 2016-06-17T21:34:24.173 に答える