Я объявляю
typedef struct LABELS_STRUCT {
char *name;
int address;
} `LABELS_STRUCT;`
LABELS_STRUCT labels_array[ARRAY_LABELS];
и функцию, которая добавляет имя и адрес aray
int add_data_label(char * label, int displace)
{
LABELS_STRUCT x = {label,DATA_STARTING_ADDRESS + (100 * displace)};
labels_array[initialize]=x;
initialize++;//=initialize+displace;
printf("\tAdding [%s] with offset [%d] to labels_array[%d] with address [%d]\n", label,displace,initialize,CODE_STARTING_ADDRESS + (100 * displace));
printf("\tlabels_array[%d].name=[%s] and labels_array[%d].address= [%d]\n", initialize, labels_array[initialize].name, initialize, labels_array[initialize].address);
return 1;
}
Второй оператор printf()
выводит данные правильно, но когда у меня естьдругая функция
int get_label_address(char *label) {
int i;
printf("Getting the Label Address for [%s]\n", label);
for (i = 0; i < initialize; i++) {
printf("\t\t\tCOMPARING LABEL [%s] TO [%s] at index [%d]\n", label, labels_array[i].name,i);
if (labels_array[i].name==label) {
printf("Label_Array[%d]=[%s] Matches label=[%s] with address [%d]\n",i,labels_array[i].name,label,labels_array[i].address);
return labels_array[i].address;
}
}
return 0;
}
Оператор debug printf()
"COMPARING LABEL [%s] to [s]..."
Loop показывает, что его сравнивают с null
.Когда я использую любую другую функцию для печати элемента в labels_array[i].name
, она дает мне пустое значение для элемента name, но не для элемента address.Допустим, у меня есть три элемента, которые я поместил в массив, labey_array[1 2 and 3]
будет пустой строкой, но label_array[4 and on]
будет иметь null
.Таким образом, он знает, что он был инициализирован, но не показывает фактическое имя, просто пустую строку
У кого-нибудь есть идеи?