Здравствуйте всем снова!
1. Собственно в следующей программе есть одна главная проблема - при чтении из файла сторки с номером счета, именем плательщика, суммой и датой, последняя строка дублируется, при этом сумма отражается некорректно во 2-й строке.
2. Также в последней функции applyfileread есть проблема, что функция не работает если пользоваться строками кода которые закомментены, ну и если собственно убрать все ненужное из работающего.
Ну самое главное с 1. проблемой разобраться, буду очень благодарен за помощь, а также за некоторые советы по коду, т.к. совсем ещё зеленый новичек
| Код |
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <sys/stat.h> #include <ctype.h> #include <fcntl.h> #include <bios.h> #include <io.h>
void applyfilewrite(); void applyfileread(); void choice(); char dataconf[30], dataapply[30], date[10]; int dataapply1, bill; FILE* config; FILE* apply;
void choice() { char answer= 'v'; while (answer!='e') { rewind(stdin); printf("Choose what you want:\n"); printf("e- end, w- write, r-read\n"); scanf("%s", &answer); if (answer=='w') { applyfilewrite(); } if (answer=='r') { applyfileread(); } } fclose(apply); fclose(config); exit(1); }
int main() { int config; clrscr(); if((config=open("config.prj", O_RDONLY|O_TEXT|S_IREAD)) == NULL) { config = open("config.prj", O_RDWR|O_CREAT|O_TEXT|S_IREAD/S_IWRITE); printf("Input application file name\n"); scanf("%30s",&dataconf); write(config, dataconf, sizeof(dataconf)); close(config); } config = open("config.prj", O_RDONLY|O_TEXT|S_IREAD); while (!eof(config)) { read(config, dataconf, sizeof(dataconf)); printf("File name is %s\n", dataconf); } choice(); close(config); getch(); return 0; }
void applyfilewrite() { apply = fopen(dataconf, "a"); printf("Input bill number: "); scanf("%2d", &bill); fprintf(apply, "%2d ", bill); printf("Input name of payer: "); scanf("%30s", &dataapply); fprintf(apply, "%30s", dataapply); printf ("Input incoming sum from %s:", dataapply); scanf("%10d", &dataapply1); fprintf(apply, "%10d", dataapply1); printf("Input date of payment: "); scanf("%15s", &date); fprintf(apply, "%15s\n", date); fclose(apply); }
void applyfileread() { //int i; apply = fopen(dataconf, "r+"); fseek(apply, 0L, SEEK_SET); while (!feof(apply)) { //i=0; //while(dataapply[i]) //{ //dataapply[i]= fgetc(apply); i++; //} fscanf(apply, "%d", &bill); printf("%2d ", bill); fscanf(apply, "%s", &dataapply); printf("%30s", dataapply); fscanf(apply, "%d", &dataapply1); printf("%10d", dataapply1); fscanf(apply, "%s", &date); printf("%15s\n", date); } fclose(apply); getch(); }
|
Добавлено: все, нашел ошибку совсем глупую, но искал реально долго
fscanf(apply, "%s\n", &date); \n тут надо было поставить 
извиняюсь за глупую тему, но вчера реально не понмал почему так происходит. |