Код не работает в 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)