Я пытаюсь скопировать список слов, каждое из которых разделено новой строкой, в новый массив размера 16, значения которого являются шестнадцатеричными версиями символа фунта '#'.Поскольку этих слов может быть меньше 16, конечное значение слова должно быть само словом, а оставшиеся позиции - символом «#», который не заменяется исходным массивом.Код для него выглядит следующим образом:
fp = fopen("english_words.txt", "r");
if (fp != NULL) {
while ((read = getline(&line, &len, fp)) != -1) {
if (read < 16) {
unsigned char word[16] = {0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23};
//read -1 and not read to ignore the last \n character in line
for (int i = 0; i < read - 1; i++) {
word[i] = line[i];
printf("%x", word[i]);
}
}
printf("\n");
}
fclose(fp);
if (line)
free(line);
}
Однако, когда я печатаю окончательный вывод, кажется, что в окончательном массиве для каждого слова вообще не осталось символов фунта.Может ли кто-нибудь помочь с этим?
РЕДАКТИРОВАТЬ:
Пример ввода с файлом, содержащим следующие слова, каждое из которых разделено новой строкой:
abacus
abalone
abandon
Output:
abacus##########
abalone#########
abandon#########
Я собираюсь обработать каждыйиз этих выведенных слов отдельно, поэтому не нужно помещать их в файл.