Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C中的文本文件读入数据时出现Seg错误_C_File_Segmentation Fault - Fatal编程技术网

从C中的文本文件读入数据时出现Seg错误

从C中的文本文件读入数据时出现Seg错误,c,file,segmentation-fault,C,File,Segmentation Fault,我试图从一个文本文件中获取信息并将其读入,主要是获取文件的长度(以字节为单位),以及文件名以确保其存在,并将其传递给此方法 我在那里有一些测试代码,用于查看问题所在,但我似乎看不到seg故障来自何处,fgetc返回值与其存储的值匹配,这是我唯一能想到的 uint32 getCode(char*fileA,int count){ //创建变量以存储我们正在读取的数据 int缓冲区=0; 寄存器uint64总计=0; //使用rb打开可以确保所有文件类型都是可读的 文件*文件; 如果(file=fo

我试图从一个文本文件中获取信息并将其读入,主要是获取文件的长度(以字节为单位),以及文件名以确保其存在,并将其传递给此方法

我在那里有一些测试代码,用于查看问题所在,但我似乎看不到seg故障来自何处,fgetc返回值与其存储的值匹配,这是我唯一能想到的

uint32 getCode(char*fileA,int count){
//创建变量以存储我们正在读取的数据
int缓冲区=0;
寄存器uint64总计=0;
//使用rb打开可以确保所有文件类型都是可读的
文件*文件;
如果(file=fopen(fileA,“rb”)){
printf(“\n文件名:%s\n计数:%d\n”,文件A,计数);
}
//同时循环每次读取32位或4字节
而(计数>0){
缓冲区=fgetc(文件);
计数--;
printf(“\n%s”,缓冲区);
}
fclose(文件);
返回1;
}

分段错误来自
printf(“\n%s”,缓冲区)--您的
缓冲区不是字符串,使用
'%c'


是的,循环一次读取32位或4个字节时,注释
//有点误导,因为您一次读取1个字节。

分段错误来自
printf(“\n%s”,缓冲区)--您的
缓冲区不是字符串,使用
'%c'


是的,注释
//一次循环读取32位或4个字节时有点误导,因为一次读取1个字节。

打印时使用
%c
格式,现在将
int
传递给
%s
。另外,启用编译器警告。您还可以使用
文件
,即使它无法打开,也可能是空指针。
printf(“\n%s”,buffer)??Buffer是一个int。确实试图编辑问题的标题并将其更改为:
在使用无效格式字符串调用printf时遇到Seg错误
。读取数据与seg故障无关。编译时始终启用警告。很明显,你没有这样做,或者选择忽略它们。对于gcc/clang,在VS使用
/W3
时,尽量少使用
-Wall-Wextra-pedantic
(建议也使用
-Wshadow
),并且在编译代码之前不要接受代码,除非没有警告。打印时使用
%c
格式,现在将
int
传递给
%s
。另外,启用编译器警告。您还可以使用
文件
,即使它无法打开,也可能是空指针。
printf(“\n%s”,buffer)??Buffer是一个int。确实试图编辑问题的标题并将其更改为:
在使用无效格式字符串调用printf时遇到Seg错误
。读取数据与seg故障无关。编译时始终启用警告。很明显,你没有这样做,或者选择忽略它们。对于gcc/clang,在VS使用
/W3
时,应尽量少使用
-Wall-Wextra-pedantic
(建议也使用
-Wshadow
),并且在编译代码之前不要接受代码,除非代码没有警告。