Нарушение прав доступа при записи (работа с файлами) - C (СИ)
Формулировка задачи:
вообщем такая проблема (на скринах),если я правильно понял то что то с переменной не так. прощу помощи и совета.
если есть замечания по коду буду руд выслушать
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <string.h>
#include <locale.h>
char file[100];
char i=0;
int deys=0;
long int password;
long int pasw;
int kolzap;
struct texnika {
char naz[100];
char tip[100];
int kol_vo;
int god;
int cena;
};
struct texnika tender[10];
int main(){
setlocale(LC_ALL,"Russian");
printf("Введите пароль: ");
scanf_s("%ld",&password);
pasw = 123456789;
if(password!=pasw){
printf("Неверный пароль");
getch();}
else
{
printf ("Выберите действие:\n");
printf ("(1) Просмотр информации\n");
printf ("(2) Добавление информации\n");
printf ("(3) Удаление ифнормации\n");
printf ("(4) Редактирование информации\n");
printf ("(5) Выход\n");
scanf_s("%d",deys);
switch(deys){
case (1):
FILE *fl;
fl=fopen("c:\\Users\\Alexandr\\Desktop\\input.txt","r");
printf("\n|Название| Тип |Кол-во| Год | Цена |\n\n");
while (fscanf (fl, "%s%s%d%d%d", tender[i].naz, &(tender[i].tip), &(tender[i].kol_vo), &(tender[i].god), &(tender[i].cena)) != EOF) {
printf(" %s %s %d\t %d %d\n", tender[i].naz, tender[i].tip, tender[i].kol_vo, tender[i].god, tender[i].cena);
i++;}
break;
case (2):
printf("Введите количество новых записей: \n");
scanf("%d",&kolzap);
for (i=0;i<=kolzap;++i)
fl=fopen("c:\\Users\\Alexandr\\Desktop\\input.txt","a");
printf ("Введите название:\n");
fprintf(fl,"%s",tender[i].naz);
printf ("Введите тип:\n");
fprintf(fl,"%s",tender[i].tip);
printf ("Введите количество\n");
fprintf(fl,"%s",tender[i].kol_vo);
printf ("Введите год выпуска\n");
fprintf(fl,"%s",tender[i].god);
printf ("Введите цену\n");
fprintf(fl,"%s",tender[i].cena);
break;
case (3): ;break;
case (4): ;break;
case (5): ;break;
getch();
}
}
}Решение задачи: «Нарушение прав доступа при записи (работа с файлами)»
textual
Листинг программы
scanf_s("%d",deys);
Объяснение кода листинга программы
- В коде используется функция scanf_s, которая предназначена для безопасного ввода данных в переменную.
- В функции scanf_s первым аргументом является формат ввода, в данном случае
%d, который указывает, что необходимо ввести целое число. - Вторым аргументом является переменная deys, в которую будет сохранено введенное значение.
- Функция scanf_s выполнит ввод данных и сохранит его в переменной deys.
- Введенное значение будет автоматически приведено к типу int (целое число).
- Если ввод данных некорректен (например, введено не целое число), то функция scanf_s вернет значение EOF, что можно использовать для обработки ошибок ввода.