c言語プログラムの作成にいくつかの問題が発生しました

1933 ワード

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で初期化を行う場合、初期化の数パラメータは1バイトの文字数を指し、メモリがセルごとに4バイトを占める場合は、2に示すように4を掛ける必要がある.ブログを参照してください.
https://blog.csdn.net/yexiaohhjk/article/details/52717934
4.malloc memsetなどの関数を使用する場合は、#includeを含める
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()あるコンパイラは通れますが、通れないコンパイラもあります.