Файловый вывод
Добавлено: 30 мар 2016, 09:11
есть файл в несколько строк.
как эти строки записать в массив
как эти строки записать в массив
Код: Выделить всё
#include <stdio.h>
int main()
{
char str[80];
FILE * pFile;
pFile = fopen("test.txt", "r");
while (fscanf(pFile, "%s", str)!=EOF){
printf("%s", str);
}
fclose(pFile);
return 0;
}
Код: Выделить всё
char str[10][100];
Код: Выделить всё
#include <stdio.h>
#include <string.h>
void main(){
FILE *fp;
fp = fopen("test.txt", "r");
char str[80];
while (fgets(str, 80, fp) != NULL){
printf("%s", str);
}
fclose(fp);
}
Код: Выделить всё
char str[10][100];
for (int i = 0; (i < 10) && (fgets(str[i], 100, fp) != NULL); ++i){
printf("%s", str[i]);
}
сам так придумал так хронить структуру в файле1234|safdasdf|sadfsda|333,00|2
1234|asdff|sadfasdf|3334,00|12
1233|qweerr|sadfsgad sadgsdfg|233,00|3244
12344|wqerasdfasdf|sadfasd asdf asdf adsf|123456,00|123
Код: Выделить всё
static struct Library{
char UDK[10];
char FullName[25];
char BookName[50];
float cost;
int quantity;
bool bin;
};
Код: Выделить всё
FILE * pFile;
struct Library book[countRow];
char arr[countRow];
char *istr;
int i = 0;
int j;
if ((pFile = fopen("db.txt", "r")) == NULL){
printf("Ошибка: невозможно открыть файл.");
exit(0);
}
while ((arr[i] = fgetc(pFile)) != EOF) {
if (arr[i] == '\n') {
arr[i] = '\0';
istr = strtok(arr, "|");
j = 0;
while (istr != NULL){
switch (j){
case 0:
strcpy(book[i].UDK, istr);
break;
case 1:
strcpy(book[i].FullName, istr);
break;
case 2:
strcpy(book[i].BookName, istr);
break;
case 3:
book[i].cost = atof(istr);
break;
case 4:book[i].quantity = atoi(istr);
break;
default:
break;
}
istr = strtok(NULL, "|");
j++;
}
printf("\n\n");
i = 0;
j = 0;
}
else i++;
}
arr[i] = '\0';
OMG...Kazanove писал(а):хронить
Наверное потому, что переменная i у тебя используется как для индекса в массиве строк, так и для индекса в массиве структур. Если её зануление для первого случая логично, то для второго случая - это катастрофа.Kazanove писал(а):почему не происходит записи в структуру?