2016-01-02 2 views
1
нарушения прав доступа гольца

Я хочу метод, что исправить умляуты (äöü) для немецкого консольного приложенияс ошибкой

#define oe (unsigned char)148 
[...] 

char* fixUmlauts(char string[]) { 
    for(int i = 0; i < strlen(string); i++) { 
    switch(string[i]) { 
     [...] 

     case 'ö': 
     string[i] = oe; 
     break; 

     [...] 
    } 
    } 

    return string; 
} 

Но я получаю сообщение об ошибке при запуске этот:

printf(fixUmlauts("Hallöle\n")); 

Нарушение доступа при записи в позиции 0x01276BE4.

Что не так?

ответ

4

Вы не можете изменить строковый литерал Hallöle\n. Вы должны скопировать его в char массив, а затем изменить что:

char string[] = "Hallöle\n"; 
fixUmlauts(string); 
+0

Вот почему я не люблю гр – Denni007

+0

@ Denni007 то не код в [тэгом: с]. Существует много языков, которые вы можете использовать, это зависит от ваших навыков и того, насколько вы понимаете представление вещей. Но, конечно, для каждой задачи требуется наиболее подходящий язык, вы не можете использовать один и тот же язык для всего, за исключением того, что вы можете использовать [tag: c] для всего (* хотя вы не должны *). Это не сложно. –

+0

Год я люблю программировать, но мне нужен C для университета. И каждый раз, когда я зацикливаюсь на этих вещах – Denni007

Смежные вопросы