1

文字列の文字を大文字に変換しようとしています

int main (void)
{
    int i = 0;
    int n = 0;
    static char *str[] = { "wow",
                           "RACEcar", 
                           "No devil lived on.",
                           "rotor" };

    for(i = 0; i < strlen(*str); i++)
    {
        if(str[i] != NULL)
        {
            n = function(str[i]);
        }
    }
    return 0;
}

int function(char* x)
{
   int i = 0;
   int j = strlen(x);
   char c;
   for(i = 0; i < j; i++)
   {
      c = toupper(x[i]);
      x[i] = c;
   }

   return 0;
}

このエラーが発生する理由がわからないexc bad access, code 2行でエラーが発生しました。別の文字列を作成して c を新しい文字列に割り当てる必要がありますか? x[i] = c;toupper は文字の大文字バージョンを返しますが、実際には要素自体を変更しませんでした。

4

1 に答える 1