У меня есть текстовый файл с 32 двоичными номерами, каждый из которых находится в отдельной строке и каждый номер имеет длину 8 символов. Я хочу сохранить их в массиве mem
в виде строк.Обозначение символа новой строки
Сейчас этот код выглядит следующим образом:
char mem[32][9];
char line[9];
FILE *file_pointer;
file_pointer = fopen(filename, "r");
if (file_pointer == NULL) {
printf("Failed to open file \"%s\"!", filename);
} else {
int i = 0;
while (fgets(line, sizeof line, file_pointer)) {
memcpy(mem[i], line, 8);
mem[i][8] = '\0';
i++;
}
}
fclose(file_pointer);
К сожалению, я все еще получаю символы новой строки в line
, так что мой массив отображается неправильно.
Это моя консоль, когда я печать массива:
00 00110100
01
02 01111100
03
04 10011100
05
06 10010101
etc...
Мой код для печати массива:
for (i = 0; i < 32; i++) {
if (i >= 10) {
printf("%d", i);
} else {
printf("%c%d", '0', i);
}
printf("\t%s\n", mem[i]);
}
Я попытался также с помощью:
strtok(line, "\n");
line[strcspn(line, "\r\n")] = '\0';
'тетсру (MEM [я], линия, 8);', что ожидаете увидеть, имеет ли 'строка' менее 8 символов? –
Измените 'line [9]' на 'line [100]'. И измените 'memcpy' на' strncpy'. – user3386109
'char line [9];' -> 'char line [10];': 8 + '\ n' +' \ 0' – BLUEPIXY