Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перезапись переменной 
:(
    Опции темы
supercelt
Дата 27.6.2016, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



STM32. Прога - keil5

Код

char str[] = "EXECUTE";
    
        LCD_ini();
        LCD_Send_String(0, str);
        Delay_ms(1000);
        
        str[] = "set";


Нужно просто перезаписать массив str. А кеил ругается. Подскажите плз как правильно это делается?
PM   Вверх
baldman88
Дата 28.6.2016, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



Массивы напрямую менять запрещено. Либо делайте в цикле поэлементно (не забыв добавить '\0' в конце), либо воспользуйтесь функциями strcpy или strncpy. Лучше использовать вторую, так как в первой, при копировании строки большей длины, чем исходная, проверка на выход за границы не происходит и можно получить ошибку. Как-то так:
Код
#include "string.h"
...
char str[] = "EXECUTE";
...
strncpy(str, "set", sizeof(str));

Поэтому, если хотите менять содержимое строки, то объявите ее просто как char str[максимально_возможная_длина_строки + 1] (плюс один нужнен для хранения символа конца строки -- '\0'). И каждый раз при изменении строки пользуйтесь функцией strncpy. Для строки на 100 символов будет так:
Код
#include "string.h"

#define MAX_LEN 101

char str[MAX_LEN];
strncpy(str, "EXECUTE", MAX_LEN);
...
strncpy(str, "set", MAX_LEN);

Так же стоит учесть в функции LCD_Send_String, что символы нужно писать до тех пор, пока не встретится символ '\0'.

Это сообщение отредактировал(а) baldman88 - 28.6.2016, 11:11
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1089 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.