Ошибка повторного вызова scanf: access violation - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, написал небольшую программу(принцип работы не рассказываю, т.к. ошибка синтаксическая) на C. Проблема вот в чем - на

втором

scanf после ввода данных и нажатия enter ms visual studio 2008 переключается в файл

input.c

на строку
Листинг программы
  1. *(char *)pointer = (char)ch;
и выдает access violation(полный текст ошибки: Unhandled exception at 0x10296551 (msvcr90d.dll) in 2.exe: 0xC0000005: Access violation writing location 0x00000000). По типам данных все проверено - ввожу правильно - в %d - целые числа, в %s - строки. Если в scanf передавать строковые переменные с операцией взятия адреса(& как обычно в scanf делается), то получится масло масляное, т.к. тип char * - указатель на область памяти, т.е. по сути адрес. Но где еще может быть подвох ума не приложу. Буду благодарен за любую помощь. Полный листинг:
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. int main()
  5. {
  6. int oldbookresult=0, n=0, year=0, pagenum=0, i=0;
  7. char * name={0}, * nameresult={0}, *pname={0};
  8. scanf("%d", &n);
  9. for(i=1; i<=n; i++)
  10. {
  11. scanf("%s %d %d %s", pname, &year, &pagenum, name);
  12. if( (year<1980) && (pagenum>=300) )
  13. {
  14. oldbookresult++;
  15. if(strlen(name) > strlen(nameresult))
  16. nameresult=name;
  17. }
  18. }
  19. printf("\nresult: %d %s", oldbookresult, nameresult);
  20. getch();
  21. return 0;
  22. }

Решение задачи: «Ошибка повторного вызова scanf: access violation»

textual
Листинг программы
  1. char * name[размер_массива]={0};//и т.д.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы