`建设Error`错误-1073741819 - Ç(`Build Error` Error -1

2019-10-23 11:31发布

我的任务是采取在每个所有可能的字母的数据文件从游戏惊奇死亡。 下面是数据文件的副本:

   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);

}

Answer 1:

在代码中,变化

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;


Answer 2:

任何其他程序中的逻辑是错误的,也有语法错误

 char data[96] ={};

因为ISO C不允许空数组的初始化。 如果您的构建由于这种破坏,它可以解释的“生成错误”。 如果要将数据初始化为零,单= { 0 }就行了。

这也是通过添加适当的选项杀青你的编译器的警告级别是个好主意。 什么操作系统(OS)这是什么? 其编译器?



Answer 3:

尝试删除从“&数据”的符号,因为我相信你想读一个字符串,所以传递字符串,而不是direccion。

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

所以你有这样的:

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


Answer 4:

强烈建议,编制,使所有的警告,然后修复这些警告的时候。 毕竟,编译器知道的语言比我们人类要好得多。

下面的代码

1)完全编译,

2)已经不需要的项目要么注释掉或#如果0 ...#ENDIF出

3)检查输入错误

4)使用“PERROR()”以包括与当前的“错误号”值的消息正确地输出系统功能错误信息

5)关闭输入文件的所有阅读结束后,

6)fscanf()函数将从输入文件读取一个数字字符,因为所遇到的任何“空白”时%s将停止后停止。

#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


文章来源: `Build Error` Error -1073741819 - C