C++ 为什么我在这个函数中遇到seg故障?
不管我怎么做,我总是在这个函数的某个地方出现seg错误C++ 为什么我在这个函数中遇到seg故障?,c++,C++,不管我怎么做,我总是在这个函数的某个地方出现seg错误 int build_playlist(Song playlist[], char* inputFiles[], int numInputFiles) { int i = 0; int j = 0; for( j = 0; j < numInputFiles; j++ ) { FILE *file = fopen(inputFiles[j], "r"); if (fil
int build_playlist(Song playlist[], char* inputFiles[], int numInputFiles)
{
int i = 0;
int j = 0;
for( j = 0; j < numInputFiles; j++ )
{
FILE *file = fopen(inputFiles[j], "r");
if (file == NULL)
{
printf("File could not be opened.\n");
return -1;
}
while (1)
{
if (feof(file))
{
break;
}
fscanf(file, "%s %s %s %d", playlist[i].artist, playlist[i].title, playlist[i].album, &playlist[i].rating);
i++;
}
fclose(file);
numInputFiles++;
}
return i;
}
int-build\u播放列表(歌曲播放列表[],char*inputFiles[],int-numInputFiles)
{
int i=0;
int j=0;
对于(j=0;j
您得到了一个无限循环,肯定会访问到边界之外
for( j = 0; j < numInputFiles; j++ )
{
FILE *file = fopen(inputFiles[j], "r");
j
将永远不会大于numInputFiles
,如果您在循环中同时增加这两个文件。您可能想要删除numInputFiles++代码>行
我们也看不到播放列表
数组的声明,但是由于您没有检查播放列表
的大小,您可能也会面临访问越界的风险。您正在增加numInputFiles,因为这个j将始终是
for( j = 0; j < numInputFiles; j++ )
{
FILE *file = fopen(inputFiles[j], "r");
这里也有几件事情可能出错:
你在歌曲阵列上出界了。我的价值变得越来越大
艺术家、标题或相册字符串没有足够的空间容纳您试图读入的字符串
... 使用调试器,单步执行代码,查看它在哪一行识别故障。这应该给你一个强烈的提示。播放列表是什么?如何申报?它是如何传递给您的函数的?与inputFiles
相同,它是什么,如何声明和初始化?