C Замена одного символа в массиве символов другим

У меня есть следующий код C

#include <stdio.h>
int main(void){
    char c[] = "ABC"
    printf("%s ", c);
    c[1] = 'B';
    printf("%s", c);
    return 0;
}

Результат, который я хочу, равен ABC BBC, но результат, который я получаю, равен ABC ABC. Как я могу заменить первый символ в массиве String/char?


person danielr1996    schedule 20.02.2015    source источник
comment
О боже, я чувствую себя таким глупым. Конечно, первый элемент в массиве имеет индекс 0. Сначала я попытался изменить c[3] на 'B' и получил полную чушь, а c[1] уже 'B', спасибо, что просветили меня.   -  person danielr1996    schedule 20.02.2015


Ответы (4)


Индексация в массивах C начинается с 0. Поэтому вам нужно заменить c[1] = 'B' на c[0] = 'B'.

Также см. аналогичный вопрос сегодняшнего дня: Smiles in output C++ - я дайте там более подробное описание :)

person NikitaBaksalyar    schedule 20.02.2015

ниже приведен код, который НА САМОМ ДЕЛЕ РАБОТАЕТ!!!!

Аммар Хурани

char * replace_char(char * input, char find, char replace) 

{

char * output = (char*)malloc(strlen(input));

for (int i = 0; i < strlen(input); i++)
{
    if (input[i] == find) output[i] = replace;
    else output[i] = input[i];
}

output[strlen(input)] = '\0';

return output;

}

person Ammar Hourani    schedule 26.09.2016
comment
Да, но он находит символ и копирует строку, ни о чем не заданный вопрос... - person mabraham; 23.02.2017

Массивы C имеют нулевое основание. Первый элемент массива находится в нулевой позиции.

c[0] = 'B';
person TheHorse    schedule 20.02.2015

пытаться

c[0] = 'B';

массивы начинаются с 0

person user934801    schedule 20.02.2015