Код не работает в 2008 версии visual studio, но работает в 2005 - C (СИ)
Формулировка задачи:
Добрый день. Писала на университетском компьютере программу, считывающую данные из файла в список структур. Там стоит 2005 версия, и всё работало нормально. При перенесении кода в 2008 vs выдает ошибку Run-Time Check Failure #2 - Stack around the variable 'str' was corrupted при запуске. Компилятор не ругается.
Файл выглядит примерно так:
#include <stdio.h> #include <stdlib.h> #include <string.h> struct Film { char Name[50]; int Year; char Genre[30]; Film*next; }; Film*createList(FILE*F, Film*tail) { char str[50]; while(fgets(str,sizeof(str)-1,F)!=NULL) { Film*obj= new Film; tail->next = obj; str[strlen(str)-1]='\0'; strcpy(obj->Name,str); fscanf(F,"%d",&obj->Year); fgetc(F); fgets(str,sizeof(str)-1,F); str[strlen(str)-1]='\0'; strcpy(obj->Genre,str); obj->next=0; tail=obj; } return tail; } void pr(Film*head) { while (head!=0) { printf("%s\n%d\n%s\n",head->Name,head->Year,head->Genre); head=head->next; } } int main() { Film*head=0; Film*tail=0; head=new Film; tail=head; FILE*F=fopen("Ghibli.txt", "r"); if (F == NULL) {printf ("errror\n"); return -1;} else printf ("ok\n\n"); createList(F,tail); pr(head->next); fclose; }
the lion king 2003 drama mulan 1998 adventure
Что не понятнее всего, на другом компьютере код работает в 2008 версии. Может ли быть дело в каких-либо настройках? Буду очень благодарна за помощь.Решение задачи: «Код не работает в 2008 версии visual studio, но работает в 2005»
textual
Листинг программы
fgets(str,sizeof(str)-1,F)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д