「C言語/ファイル入出力」の版間の差分
削除された内容 追加された内容
→ファイルのオープン: エラーハンドリングを統一 タグ: 2017年版ソースエディター |
scanf系の戻値チェック漏れ多数。文字列に読み込んで字句解析する安全なコードを示すべきでは?そうするにしても、Cではバッファ長の管理が煩雑になりがちでバッファオーバーランの温床。 タグ: 2017年版ソースエディター |
||
140 行
さて、たとえばファイルに「test」とだけ書き込みたいなら、
<code>
fprintf(
</code>
というふうに入力すればいい。
157 行
そのあと、プログラムがコード内でのファイル書き込み実行場所にて
<syntaxhighlight lang="C">
fprintf(
</syntaxhighlight>
のようなコードを実行するように、ソースコードを記述すればいい。
179 行
int main()
{
FILE *
if (
perror("
return 1;
}
▲ printf("ファイルをオープンしました。\n");
char string[50];
printf("キーボードから文字列を入力してください。\n");
perror("");
return 1;
}
printf("入力された文字列は %s です。 \n", string);
printf("これをファイルに書き込みます。 \n");
fprintf(
fclose(
printf("ファイルをクローズしました。\n");
}
247 ⟶ 248行目:
int main()
{
FILE *
if (
perror("ファイルを開けませんでした。\n");
return 1;
260 ⟶ 261行目:
printf("文字列を読み取っています。\n");
perror("");
return 1;
} printf("ファイルに書いてある文字列\n"); printf("%s\n", str1);
fclose(
printf("ファイルをクローズしました。\n");
}
296 ⟶ 299行目:
int main()
{
FILE *
if (
perror("ファイルを開けませんでした。\n");
return 1;
308 ⟶ 311行目:
printf("文字列を読み取っています。\n");
perror("");
return 1;
}
printf("ファイル1行目に書いてある文字列\n");
printf("%s\n", str1);
perror("");
return 1;
}
printf("ファイル2行目に書いてある文字列\n");
printf("%s\n", str1);
fclose(
printf("ファイルをクローズしました。\n");
}
363 ⟶ 372行目:
int main()
{
FILE *
if (
perror("ファイルを開けませんでした。\n");
return 1;
375 ⟶ 384行目:
printf("文字列を読み取っています。\n");
fgets(buffer1,150,
printf("1回目に読み取った文字列\n");
printf("%s", buffer1);
fgets(buffer1,150,
printf("2回目に読み取った文字列\n");
printf("%s", buffer1);
fclose(
printf("ファイルをクローズしました。\n");
}
420 ⟶ 429行目:
int main()
{
FILE *
if (
perror("ファイルを開けませんでした。\n");
return 1;
}
▲ printf("ファイルをオープンしました。\n");
char buffer1[150];
printf("文字列を読み取っています。\n");
perror("");
return 1;
}
printf("%s", buffer1);
return 1;
}
printf("2回目に読み取った文字列\n");
printf("%s", buffer1);
fclose(
printf("ファイルをクローズしました。\n");
}
509 ⟶ 522行目:
int main()
{
FILE *
if (
perror("ファイルを開けませんでした。\n");
return 1;
}
▲ printf("ファイルをオープンしました。\n");
char str1[150];
523 ⟶ 534行目:
printf("文字列を読み取っています。\n");
perror("");
return 1;
}
printf("str1として読み取った文字列\n");
531 ⟶ 545行目:
printf("%s\n", str2);
fclose(
printf("ファイルをクローズしました。\n");
}
598 ⟶ 612行目:
int main()
{
FILE *
if (
perror("ファイルを開けませんでした。\n");
return 1;
}
▲ printf("ファイルをオープンしました。\n");
char buffer1[150];
printf("文字列を読み取っています。\n");
fgets(buffer1,150,
printf("%s", buffer1);
char str1[150];
623 ⟶ 633行目:
strncpy(str2, strtok(NULL,",") ,150);
printf("%s", str1);
printf("\n");
printf("%s", str2);
fgets(buffer1,150,
printf("%s", buffer1);
638 ⟶ 648行目:
strncpy(str2, strtok(NULL,",") ,150);
printf("%s", str1);
printf("\n");
printf("%s", str2);
fclose(
printf("ファイルをクローズしました。\n");
}
698 ⟶ 708行目:
int main()
{
FILE*
if (
perror("ファイルを開けませんでした。\n");
return 1;
720 ⟶ 730行目:
// 下記のline は読み取りたい行数
for (int line = 1; line <= 2; line = line + 1) {
fgets(buffer1, 150,
printf("%d行目の文字列\n",line);
743 ⟶ 753行目:
fclose(
printf("ファイルをクローズしました。\n");
807 ⟶ 817行目:
== 文字コード ==
{{Main|[[w:Microsoftコードページ932]]}}
== Linux の場合 ==
871 ⟶ 828行目:
int main()
{
FILE *
if (
perror("ファイルを開けませんでした。\n");
return 1;
884 ⟶ 841行目:
printf("文字列を読み取っています。\n");
fscanf(
printf("ファイル1行目に書いてある文字列\n");
printf("%s\n", str1);
fscanf(
printf("ファイル2行目に書いてある文字列\n");
printf("%s\n", str1);
fclose(
printf("ファイルをクローズしました。\n");
946 ⟶ 903行目:
setlocale(LC_ALL, "ja_JP.UTF-8"); //ロケール(地域)を設定する。
FILE*
if (
wprintf(L"ファイルを開けませんでした。\n");
return 1;
959 ⟶ 916行目:
wprintf(L"文字列を読み取っています。\n");
fwscanf(
wprintf(L"ファイルに書いてある文字列\n");
966 ⟶ 923行目:
wprintf(L"\n");
fclose(
wprintf(L"ファイルをクローズしました。\n");
1,020 ⟶ 977行目:
_wsetlocale(LC_ALL, L""); //ロケール(地域)を設定する。
FILE*
if (
wprintf(L"ファイルを開けませんでした。\n");
perror(0);
1,034 ⟶ 991行目:
wprintf(L"文字列を読み取っています。\n");
fwscanf(
wprintf(L"ファイルに書いてある文字列\n");
1,041 ⟶ 998行目:
wprintf(L"\n");
fclose(
wprintf(L"ファイルをクローズしました。\n");
}
1,072 ⟶ 1,029行目:
int main()
{
FILE *
if (
perror("ファイルを開けませんでした。\n");
return 1;
1,085 ⟶ 1,042行目:
char buf[5] = {0x42,0x4d,3,4,5};
fwrite(buf, 1, 5,
fclose(
printf("ファイルをクローズしました。\n");
}
1,124 ⟶ 1,081行目:
int main()
{
FILE *
if (
perror("ファイルを開けませんでした。\n");
return 1;
1,138 ⟶ 1,095行目:
printf("文字列を読み取っています。\n");
fread(str1, sizeof(unsigned char), sizeof(str1) / sizeof(str1[0]),
printf("ファイルに書いてある文字列\n");
printf("%s\n", str1);
fclose(
printf("ファイルをクローズしました。\n");
}
1,173 ⟶ 1,130行目:
int main()
{
FILE *
if (
perror("ファイルを開けませんでした。\n");
return 1;
1,186 ⟶ 1,143行目:
printf("バイナリーデーターを読み取っています。\n"); // 「文字列」ではなくバイナリーデーター
fread(str1, sizeof(char), 50,
printf("ファイルに書いてあるバイナリーデーター\n");
1,195 ⟶ 1,152行目:
}
fclose(
printf("\nファイルをクローズしました。\n");
|