Как заменить символ в строке на языке Си?
при изучении языка Си возник вопрос, почему не получается изменить первую букву строк name?
#include <stdio.h>
int main(void)
{
char name[] = "QWE";
name[0] = "R";
printf("%s", name);
return 0;
}
При сборке вылезает *warning: assignment to 'char' from 'char ' makes integer from pointer without a cast [-Wint-conversion]. Запуск программы выводит вместо ожидаемого "RWE", "DWE".
Ответы (2 шт):
В языке С двойные кавычки " обозначают строку, массив с завершаешим нуливым символом \0 а одинарные кавычки ' одиночный символ, если вы хотите на определном месте строки переписат символ нужно указать что вы переписываете символ.
name[0] = 'R';
а не пытаетесь на место символа записать строку.
В си по-разному записываются символы и строки (символы в одинарных кавычках, строки - в двойных).
При этом строка - это просто массив символов.
Поэтому "R" имеет тип const char* (т.е. константный указатель на массив символов)
В строке name[0] = "R"; Вы пытаетесь присвоить символу строку (т.е. указатель), из-за чего компилятор производит неявное преобразование (о чем, собственно, Вас и предупреждает)
Исправьте двойные кавычки вокруг R на одинарные.