2016-12-02 5 views
0

Когда моя программа запускается, IF (ch [0] == 'P') фактически помещает значение 'P' в ch [0]. Любые идеи, что здесь происходит? Выход: «Array является Pyz»Оператор IF изменяет элемент массива в функции

char *try1(char ch[]); 

int main() 
{ 
    char ch[] = { 'x','y','z' }, *ch1; 
    ch1=try1(ch); 
    printf("\nArray is %s\n",ch1); 
    return 0; 
} 

char *try1 (char ch[]) 
{ 
    if (ch[0]=='P') 
    { 
    ch[1]='Q'; 
    } 

    return ch; 
} 
+3

Вы уверены, что у вас есть '' ==, а не '' =? –

+0

Спасибо BJ Myers. Ты прав. Извините, я старался быть очень осторожным, прежде чем я разместил это, но я пропустил это. Я буду более основательным в будущем. – DartmouthMan

+0

Вы должны изучить [правильное форматирование С] (// prohackr112.tk/r/proper-c-formatting). Или узнайте, как [полностью обфускать свой код] (// prohackr112.tk/r/proper-c-obfuscation). –

ответ

2

Если вы хотите, чтобы интерпретировать ч в виде строки, вы должны прекратить массив с «/ 0». Заменить

char ch[] = { 'x','y','z'} 

с

char ch[] = { 'x','y','z', '\0' } 

и выход становится "Array является хуг."

Для получения более подробной информации читайте https://en.wikipedia.org/wiki/Null-terminated_string

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