Это мой первый пост здесь, в StackOverflow!Я пытаюсь написать код, который читает код сборки и сохраняет его в массиве структур.Я реализовал функцию, которая делает это.Внутри функции кажется, что значения были правильно переданы в массив структур, так как я пытался увидеть значения в структурах с некоторыми printf
.Но когда я пытаюсь увидеть те же значения вне функции (поэтому я использовал для этой функции некоторые значения printf
), напечатанные значения абсолютно неверны!
Obs: логика кодане завершена, я просто пытаюсь решить проблему чтения файлов на данный момент.Obs2: .txt файл, который я пытаюсь прочитать:
oi MOV s1, s2
tchau ADD s3, s4
1 sub s5, s6
void loader(struct instructionEmMnemonico mnemonicoInstru[500]) {
FILE* arquivo;
int i = 0, j = 0;
char letra = '0';
int endline = 0;
int mnemonico = 0;
char line[90];
char *token, *result;
arquivo = fopen("teste.txt", "r");
if(arquivo == NULL) {
printf("Arquivo nao pode ser aberto\n");
}
while(!feof(arquivo)) {
fgets(line, 90, arquivo);
printf("%c-----------\n",line[0]);
if(line[0] != ' ' || line[0] != '\n' || line[0] != '\t') {
token = strtok(line,", \n\t");
mnemonicoInstru[i].label = token;
printf("%s\n",mnemonicoInstru[i].label);
token = strtok(NULL,", \n\t");
mnemonicoInstru[i].mnemonico = token;
printf("%s\n",mnemonicoInstru[i].mnemonico);
token = strtok(NULL,", \n\t");
mnemonicoInstru[i].operando1 = token;
printf("%s\n",mnemonicoInstru[i].operando1);
token = strtok(NULL,", \n\t");
mnemonicoInstru[i].operando2 = token;
printf("%s\n",mnemonicoInstru[i].operando2);
} else {
token = strtok(line,", \n\t");
mnemonicoInstru[i].label = token;
printf("%s\n",mnemonicoInstru[i].label);
token = strtok(NULL,", \n\t");
mnemonicoInstru[i].mnemonico = token;
printf("%s\n",mnemonicoInstru[i].mnemonico);
token = strtok(NULL,", \n\t");
mnemonicoInstru[i].operando1 = token;
printf("%s\n",mnemonicoInstru[i].operando1);
token = strtok(NULL,", \n\t");
mnemonicoInstru[i].operando2 = token;
printf("%s\n",mnemonicoInstru[i].operando2);
token = strtok(NULL,", \n\t");
mnemonicoInstru[i].operando3 = token;
printf("%s\n",mnemonicoInstru[i].operando3);
}
i++;
}
fclose(arquivo);
}
int main() {
struct instructionEmMnemonico programa[500];
loader(programa);
printf("-----\n");
printf("%c--------\n",programa[2].label[0]);
printf("%s---\n",programa[2].mnemonico);
printf("%s--\n",programa[2].operando1);
printf("%s-\n",programa[2].operando2);
return 0;
}
В printf
внутри функции "загрузчик" результаты верны, но printf
в основной функции не имеет никакого смысла!