`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
我的任务是从游戏 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