Поэтому я использую fgets, чтобы получить строки из файла, а затем добавить их в массив. Но прежде чем добавить их в массив, я хочу удалить символ "\ n". Это то, что я использовал для этого
strtok(str,"\n");
array[i] = strdup(str);
массив инициализируется в
char * array [32];
Теперь функции работают отлично, я могу использовать массив и его элементы так, как я этого не хотел. Однако всякий раз, когда я пытаюсь напечатать элементы, они не работают должным образом.
например, если array[i] = hello
printf("%s:TEST",array[i]);
напечатает
:TEST
но
printf("%s\n:TEST",array[i]);
напечатает
hello
:TEST
Мне нужно, чтобы он был на одной строке, поэтому я не могу использовать \ n, и просто странно, как он будет печататься, только если после него будет новая строка.
Редактировать: не strdup (штрих), а strdup (str)
Edit:
Полный пример кода:
char *array[32]
char holder[32]
FILE *fp = fopen("file.txt","r");
int i = 0;
while(fgets(holder, 100, fp)){
strtok(holder,"\n");
array[i] = strdup(holder);
i++;
}
fclose(fp);
printf("word: %s",words[1]);
array [i] не будет печататься, если после него не будет '\ n', как упоминалось выше
Редактировать: добавлена функция печати
текстовый файл в формате
string1
string2
string3