まず、文字を読みたい場合は、fgets()
を使用してください。実際にfread()
を使用したいとします。
fread()
は読んだアイテムの数を返しますので、あなたのケースでは0
です。 fread()
に100バイトの1要素を読み込むように依頼するため...ファイルが100バイト未満の場合、これは常に0
を返します。要素のサイズと要素の数を入れ替えました。
さらに、配列を有効なC文字列にする場合は、最後にNULL終止符バイトを置く必要があります。 fread()
はあなたのためにそれをしませんので。
例:ファイルに100バイトがない場合
#include <stdio.h>
int main(void) {
FILE *f = fopen("mydata.dat", "rb");
if (f == NULL) { // Error check
perror("fopen()");
return 1;
}
char content[100];
size_t ret;
// We loop on the file to read 99 bytes at each loop
// sizeof *content is the size of an element of content
while ((ret = fread(content, sizeof *content, sizeof content - 1, f)) > 0) {
content[ret] = '\0'; // We use ret to nul terminate our string
printf("%s", content);
fflush(stdout); // flush the standard output
}
fclose(f);
}
'fread'は、' == '1'ではありません。テキストの場合、 '' rt "'モードでファイルを開いてから 'fgets'を使う方が良いでしょう。 –
@Zakir、 'content'は文字列ですが、'%c'は単一の 'char'_を出力するために使用されますが、それは動作しません。 – ForceBru
@WeatherVane:ファイルはバイナリであり、そのように扱う必要があります。 – 4thSpace