Я новичок в C и stackoverflow, поэтому простите меня, если мой вопрос глупый или дубликат.C строка исчезает вместе с символом новой строки
Итак, я попытался прочитать строки строки (и целые числа) из .txt-файлов и сохранить их в массив кортежей. Строки, считанные из файла, как представляется, содержат «\ n» каждый раз, поэтому я использую strcspn(), чтобы удалить его.
FILE* f = fopen("board.txt","r");
int x;
size_t size = 30;
char *buffer;
for (i=1;i<=32;i++)
{
buffer = (char *)malloc(size);
x = getline(&buffer,&size,f);
buffer[strcspn(buffer,"\n")] = 0;
A[i].name = buffer;
buffer = (char *)malloc(size);
x = getline(&buffer,&size,f);
buffer[strcspn(buffer,"\n")] = 0;
A[i].type = buffer;
buffer = (char *)malloc(size);
x = getline(&buffer,&size,f);
A[i].price = atoi(buffer);
}
for (i=1;i<=32;i++)
printf("%s ",A[i].name);
for (i=1;i<=32;i++)
printf("%s ",A[i].type);
Однако, когда я пробовал код выше, printf ничего не распечатывал. Но тогда, когда я пытался использовать \ n в printf (printf ("% s \ n", A [i] .type);), он работал отлично. Кажется, что строки полностью исчезают, когда я удаляю «\ n», а затем возвращаюсь только тогда, когда я нажимаю «\ n», когда я его печатаю.
Может кто-нибудь объяснить, что не так в коде? Или это проблема библиотеки? Заранее спасибо.
Редактирование: Поэтому, чтобы объяснить это немного дальше, мне нужно, чтобы эти строки (имя и тип) были напечатаны в «ящиках», чтобы сформировать вид настольной игры, поэтому я думаю, что приведение новой строки вызовет массу проблем позже на.
Возможный дубликат [Почему Printf не вровень после вызова, если перевод строки не находится в строке формата?] (Http://stackoverflow.com/questions/1716296/why -does-printf-not-flush-after-the-call-except-a-newline-is-in-the-format-strin) –
Что у вас есть против [0]? –
ничего особенного ... на самом деле у него есть свой собственный идентификатор позже, поэтому, чтобы избежать путаницы, я пропустил 0 – SimpliCty