`Build Error` 错误 -1073741819 - C

`Build Error` Error -1073741819 - C

我的任务是从游戏 Boggle 中获取每个骰子的所有可能字母的数据文件。这是数据文件的副本:

   D R L X E I
   C P O H S A
   N H N L Z R
   W T O O T A
   I O S S E T 
   N W E G H E
   B O O J A B
   U I E N E S
   P S A F K F
   I U N H M Qu
   Y R D V E L
   V E H W H R
   I O T M U C
   T Y E L T R
   S T I T Y D
   A G A E E N

每个骰子取 6 个字母,这些字母存储在链表中。当我尝试 运行 以下代码时,我不断收到错误代码:C:\Dev-Cpp\Makefile.win [Build Error] [Untitled1.o] Error -1073741819

我试过使用 3 种不同的 IDE,但似乎总是遇到一些编译问题。我似乎无法弄清楚我要去哪里错了!无论如何这还没有完成,但我宁愿在我继续深入之前弄清楚这一点。提前致谢!

代码:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>


#define LENGTH 80

struct boggleDataNode{
       char data[3];
       struct boggleDataNode *nextData;
}*head;

struct boggleDieSideNode{
       char dieSideData[3];
       struct boggleDieSideNode *nextSide;
}*head1;

void readData(struct boggleDataNode temp);

int main(){
    int counter = 0;
    struct boggleDataNode *head;
    struct boggleDieSideNode *head1;
    struct boggleDataNode *temp;
    *head = NULL;
    *head1 = NULL;
    *temp = *head;
    readData(*temp);


    system("pause");
    return 0;
}
void readData(struct boggleDataNode temp){
    //initializing variables including
    //opening the input file
    FILE *input = fopen("BoggleData.txt","r");
    int name =0; 
    int id=0;
    char data[96] ={};

    //error checking that the file opened
    if (input == NULL){
        fprintf(stderr, "Can't open input file!\n");
        exit(1);
    }
    while( fscanf(input, "%s", &data) != EOF)
           printf("%s", data);

}

在您的代码中,更改

struct boggleDataNode{
       char data[3];
       struct boggleDataNode *nextData;
}*head;

struct boggleDataNode{
       char data[3];
       struct boggleDataNode *nextData;
};

因为您似乎无论如何都不需要该结构的全局指针。根据您的使用情况,它将被本地 head.

隐藏

head1 也一样。

接下来,您将 NULL 分配给指针本身,而不是分配给它 指向 的变量。 (FWIW,NULL 本身是一个指针,不过是一个 无效的 指针。

改变

*head = NULL;

head = NULL;

无论你的程序逻辑中还有什么错误,

中也存在语法错误
 char data[96] ={};

因为 ISO C 禁止空数组初始值设定项。如果您的构建因此而中断,它可能会解释 "Build Error"。如果您希望数据被零初始化,一个 = { 0 } 就可以了。

通过添加适当的选项提高编译器的警告级别也是一个好主意。这是什么系统(OS)?哪个编译器?

尝试从“&data”中删除 & 符号,因为我相信您正在尝试读取一个字符串,所以传递字符串,而不是方向。

 while( fscanf(input, "%s", &data) != EOF)
       printf("%s", data);

所以你会得到这个:

  while( fscanf(input, "%s", data) != EOF)
       printf("%s", data);

强烈建议,在编译时启用所有警告,然后修复这些警告。毕竟,编译器比我们人类更了解这种语言。

如下代码

1) 编译干净,

2) 不需要的项目被注释掉或#if 0...#endif out

3) 检查输入错误

4) 使用'perror()'正确输出系统函数错误信息 包括与当前 'errno' 值

相关的消息

5) 所有读取完成后关闭输入文件

6) fscanf() 将在从输入文件中读取一个数字字符后停止 因为 %s 将在遇到任何 'white space' 时停止。

#include <string.h>
#include <stdlib.h>
#include <stdio.h>


//#define LENGTH 80
// Note: surround numeric #defines with parens to avoid text substituion errors
#define MAX_DATA_LEN (96)

#if 0
struct boggleDataNode
{
       char data[3];
       struct boggleDataNode *nextData;
};
#endif

#if 0
struct boggleDieSideNode
{
       char dieSideData[3];
       struct boggleDieSideNode *nextSide;
};
#endif


void readData( void );

int main( void )
{
    //int counter = 0;
    //struct boggleDataNode *head = NULL;
    //struct boggleDieSideNode *head1 = NULL;
    //struct boggleDataNode *temp = NULL;

    readData();


    system("pause");
    return 0;
} // end function: main


void readData()
{
    //initializing variables including
    //opening the input file
    //int name =0;
    //int id=0;
    char data[ MAX_DATA_LEN ];

    FILE *input = fopen("BoggleData.txt","r");
    //error checking that the file opened
    if (input == NULL)
    {
        perror("Can't open input file!\n");
        exit(1);
    }

    // implied else, fopen successful

    while( 1 == fscanf(input, " %s", data)) // note: format string leading space to skip 'white space'
           printf("%s", data);

    fclose( input );
} // end function: readData