いつも活用させていただいております。
早速ですが、質問させていただきます。
やりたいこと
指定したテキストファイルを読み出し、読み出したテキストデータを変数へ格納したい。
知りたいこと
read関数を使用して読み出しをしているが、1回のReadですべてのデータを読み出せないケースはあるのか?
ネットで調べると、read関数を実行し、その返り値(読み出したデータサイズ)が取得サイズと一致
していない場合にwhile等で繰り返すものも見かけるが、そもそも、サイズを指定して読み出して
途中までしか読めないケースがどういう場合なのかがイメージできない
ソースコード
自分がよく使用しているコード抜粋(read関数は1回のみ)
※読み出すファイルサイズは最大でも2MB程度
C
1 struct _stat st; 2 int hf = open(pFileName, O_RDONLY); 3 if (hf < 0 || _fstat(hf, &st) == -1) { 4 return FALSE; 5 } 6 DWORD dwSize = st.st_size; 7 8 char *m_pFile = (char*)malloc(dwSize+1); 9 if (!m_pFile) { 10 close(hf); 11 return FALSE; 12 } 13 14 DWORD dwLen = dwSize; 15 16 int nRead = read(hf, (LPVOID)m_pFile, dwLen); // ★ここのreadでファイル全体を読み出し 17 if (nRead < 0) { 18 close(hf); 19 return FALSE; 20 } 21 22 m_pFile[dwSize] = '\0' 23 24 close(hf);
実行環境
OS:Linux
普段read関数を、1回のみで使用していることがあり、そもそもこのやり方が良くないのか
疑問に思いまして。。。
read関数で、指定したサイズ分読めないケースがどういうものがあるのか教えていただければと思います。
協力宜しくおねがいします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/01 01:19