编写c语言程序遇到一些问题

1.读取文件路径时,是双斜杠,如果是单斜杠,会出现找不到目标文件的情况

fid = fopen("E:\\my_c\\cloud_detection\\cloud_detection\\cloud\\gray_13.txt", "rb");

2.数组使用前要进行内存分配和初始化,一定要初始化,不然有可能出现读取位置XXX时发生访问冲突的问题

	labelmap = (int *)malloc(sizeof(int)*height*width);
	memset(labelmap, 0, sizeof(int)*height*width);

3.利用memset进行初始化时,初始化的数目参数是指的一个字节的字数,如果该内存每个单元占四个字节,则需要乘以四,如2中图所示。另外可参考博客:

https://blog.csdn.net/yexiaohhjk/article/details/52717934

4.使用malloc memset等函数时,要包含 #include<memrory>

5.c语言中读写二进制文件用到的一些函数:

fopen:打开一个二进制文件

	FILE* fid;	
	fid = fopen("E:\\my_c\\cloud_detection\\cloud_detection\\cloud\\gray_13.txt", "rb");
	if (fid == NULL)
		exit(1);

fseek:将文件指针放到一个指定的位置

int fseek(FILE *fid, long offset, int fromwhere);

fseek(fid, 0, SEEK_END);//将文件指针定移动到文件末尾
fseek(fid,50,SEEK_SET);//将文件指针移到离文件头50个字节的地方

参考博客:https://www.cnblogs.com/xingyunblog/p/3675568.html

fread和fwrite分别从二进制文件中读数据或写数据

  (1)size_t fread ( void * ptr, size_t size, size_t count, FILE * fid );

     其中,ptr:指向保存数据的指针;size:每个数据类型的大小;count:数据的个数;fid:文件指针

     函数返回读取数据的个数。

  (2)size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * fid );

       其中,ptr:指向保存数据的指针;size:每个数据类型的大小;count:数据的个数;fid:文件指针

     函数返回写入数据的个数。

参考博客:https://www.cnblogs.com/xudong-bupt/p/3478297.html

ftell:该函数用于得到文件位置指针相对于文件首的偏移字节数

rewind: 将文件位置指针重新指向一个流(数据流/文件)的开头

6.C语言常用的头文件介绍

参考博客:https://blog.csdn.net/sinat_23338865/article/details/52150654

7.main函数的正确调用形式:

int main(int argc, char*argv[])
int main()

main函数需要返回int型数据

void main()有的编译器可以通过,有的编译器不能通过。

猜你喜欢

转载自blog.csdn.net/yanxiaopan/article/details/85060885