Задать вопрос

Как изменить присвоенное значение переменной char?

Как изменить значение переменной char в СИ пробовал так ...
9f8b1d0e91be4f4bba1fd2dae45ff2cc.PNG
но не получилось. Ну и желательно объяснить потом почему ибо я ток по сути не дано начал изучать СИ.
  • Вопрос задан
  • 1472 просмотра
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
CityCat4
@CityCat4 Куратор тега C
//COPY01 EXEC PGM=IEBGENER
char string_1[7] = "0"; - так нельзя. Это не Perl, не /bin/sh, где переменные без типа до тех пор, пока не прошло первое присваивание. Массиву символов вообще присвоить в C довольно сложно. Можно например вот так:
char string_1[] = "0";
char string_2[] ={ '0'};

Имя массива - константа. Ее нельзя изменить. Можно взять указатель на нее и с ним работать.
if (string_1 == "00");
Здесь сразу две ошибки :) Во-первых, компилятор дойдет до ; и посчитает, что if кончился :) , а во-вторых работать со строками так нельзя. Для сравнения строк есть str(n)cmp, memcmp. Код
if (*string_1 == '0');
был бы правильным с точки зрения структур языка, но бессмысленным
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@ivkol
читайте сначала лекции слишком многого не знаете
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
Стоит начать с того, что использовать фигурные скобки везде. Особенно в ветках if

ибо в исходнике сейчас
if (string_i == "0") {
;
}

Ну и char string_1[7] - это некая коробочка с 7 ячейками.
Ячейки нумеруются от 0 до 6.
Каждая ячейка может вместить только ОДНУ букву

соответственно string_1[7] = "00" - выглядит как "впихнуть в 7 ячейку коробочки ДВЕ буквы"

а это уже как в анекдоте про тест на интеллект среди ментов: победили сильные -)
Ответ написан
@Mercury13
Программист на «си с крестами» и не только
В Си нет даже строкового типа. Вся работа со строками идёт на самом низком уровне.

Строка 9.
1. Использовать if (strcmp(string_1, "0") == 0).
2. Тело if сейчас пустое, убрать точку с запятой. А лучше — использовать фигурные скобки.

Строка 10.
1. Выход за границы диапазона.
2. Если заменить 7 на 6, то в модели строк Си ничего не делает — если строка состоит из нуля, NUL и пяти символов мусора, то что ни пиши в мусор, значение не изменится.
3. Если надо присвоить завершающий NUL — используй '\0'.
4. Если хочешь просто присвоить строке значение «00», используй strcpy/strncpy.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы