Я пытаюсь хранить символы, считанные из файла, в массив символов, но он также сохраняет все последующие символы. Для этого кода я создал структуру и функцию для инициализации массива.C - Строки в структурах, возвращающие весь массив
От "Structures.h"
typedef struct (
int size;
char *elem;
} cvector;
С "Utilities.c"
cvector make_cvector (int size)
{ cvector temp;
temp.size = size;
temp.elem = calloc(size, sizeof(char));
return temp;
}
Тогда я пытаюсь прочитать текстовый файл, который говорит: "ABC"
В теле я заявил: (где nPtr является указателем для открытия файла)
cvector NodeID;
NodeID = make_cvector(3);
for(i=0;i<3;i++){
fscanf(nPtr,"%s", &NodeID.elem[i]);
printf("%s ",&NodeID.elem[i]);
}
Это приводит к «Азбуке» Но сразу после этого цикла я ввел еще один цикл:
for(i=0;i<3;i++)
printf("%s ", &NodeID.elem[i]);
Итогового к «Азбуке Ьса с» Когда на самом деле я хочу «а», «б» и «в» хранимом в отдельности. Возможно, что-то не так с моей инициализацией или указателями, но я пытался читать онлайн безрезультатно. Где могла быть ошибка? Спасибо!
Спасибо за это, и я понимаю ошибку. Тем не менее, печать была всего лишь средством для демонстрации моей проблемы. Реальная проблема, с которой я столкнулся, была в последней части, где я положил: 'if (strcmp (LoadLoc, & NodeID.elem [j]) == 0)' , которого в принципе никогда не было. Я полагаю, что ошибка тогда не связана с инициализацией, но с использованием «strcmp», что было бы подходящей альтернативой? : D Я также попытаюсь выполнить поиск в Интернете. Большое спасибо, сэр! – user2853084
'LoadLoc' - это строка, содержащая один символ, не так ли? Если это так, тогда вместо этого загрузите 'LoadLoc' в' char' и выполните 'if (LoadLoc == NodeID.elem [j])' – Simon
Спасибо! Это сработало, но я хотел сохранить определенный уровень универсальности, поскольку некоторые части программы могут перейти к сравнению строк, а не только символов. Во всяком случае, я решил проблему, инициализируя их как «cmatrix» вместо «cvector», где первое измерение представляет собой массив строк, а второе измерение - массив символов в строке. Спасибо за помощь! : D – user2853084