2015-05-18 3 views
0

В моем коде я хочу обновить содержимое глобального массива data через функцию. Однако, когда я вызываю функцию, содержимое data не изменяется, несмотря на функцию, вызывающую strcpy(), чтобы произвести это изменение - впоследствии data по-прежнему содержит «prg». Как я могу использовать strcpy() или что-то подобное, чтобы написать новое значение для данных?strcpy() не пишет новую строку

char data[255] = "prg"; 

void process_tuple(Tuple *t) 
{ 
    //Get key 
    int key = t->key; 

    //Get integer value, if present 
    int value = t->value->int32; 

    //Get string value, if present 
    char string_value[32]; 
    strcpy(string_value, t->value->cstring); 

    strcpy(data, "prg1212"); 

    //Decide what to do 
    switch(key) { 
     case key_0: 

     break; 
    }; 
} 

static WeatherAppDataPoint s_data_points[] = 
{ 
    { 
    .city = data, 
    .description = "surfboard :)", 
    .icon = WEATHER_APP_ICON_GENERIC_WEATHER, 
    .current = 110, 
    .high = 120, 
    .low = 100, 
    }, 
}; 

ответ

0

я понял, проблема с помощью @Blidny и @MikeofSST Оказывается, что мой код выше, содержащийся в файле app_data.c не работает код снаружи, если функции созданы в app_data.h. Я переместил код в пустоту, где мои temperature значения были отформатированы и написаны, а strcpy() работал как шарм.

0

Вы спутать, программу, как написано изменится data к prg1212, если функция выполняется. Вы либо не вызываете его (плохое подключение к событию, и т. Д.), То код в письменном виде не является точным (частичный код, который скрывает реальную проблему) или оценивает неправильный указатель во время отладки (или в неподходящее время).

+0

Как я могу исправить любую из этих проблем? Вам нужно будет увидеть больше кода? @Blindy – AgentSpyname

+1

@AgentSpyname Создайте временный тест в 'main()', который (1) использует 'printf()' для вывода содержимого 'data', (2) вызывает' process_tuple() ', (3) использует' printf() 'для вывода содержимого« данных »снова после вызова. ** Если ** 'Tuple * t' вы проходите, это нормально и не вызывает выброса исключения, вы увидите, что значение изменяется, как и ожидалось. –

+0

@MikeofSST Я немного попробую. Спасибо за вашу помощь – AgentSpyname

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