#include <stdio.h>
int main(){
int ch;
FILE *sfp;
FILE *dfp;
char sname[FILENAME_MAX];
char dname[FILENAME_MAX];
printf("コピー元ファイル名 : "); scanf("%s", sname);
printf("コピー先ファイル名 : "); scanf("%s", dname);
if((sfp = fopen(sname, "rb")) == NULL){
printf("コピー元ファイルをオープンできません\n");
}else{
if((dfp = fopen(dname, "wb")) == NULL){
printf("コピー先ファイルをオープンできません\n");
}else{
while((fread(&ch, sizeof(int), 1, sfp)) > 0){
fwrite(&ch, sizeof(int), 1, dfp);
putchar(ch);
}
fclose(dfp);
}
fclose(sfp);
}
return 0;
}
[A] *Happy (Example Solutions);
新・明解C言語 入門編(2014年初版発行)の解答例を載せています。
演習 13-12
#include <time.h>
#include <stdio.h>
char data_file[] = "datetime.bin";
void get_data(){
FILE *fp;
if((fp = fopen(data_file, "rb")) == NULL){
printf("本プラグラムを実行するのは初めてですね\n");
}else{
int year, month, day, h, m, s;
fscanf(fp, "%d%d%d%d%d%d", &year, &month, &day, &h, &m, &s);
printf("前回は%d年%d月%d日%d時%d分%d秒でした\n", year, month, day, h, m, s);
fclose(fp);
}
}
void put_data(){
FILE *fp;
time_t current = time(NULL);
struct tm *timer = localtime(¤t);
if((fp = fopen(data_file, "wb")) == NULL){
printf("ファイルをオープンできません\n");
}else{
fprintf(fp, "%d %d %d %d %d %d\n", timer->tm_year + 1900, timer->tm_mon + 1, timer->tm_mday, timer->tm_hour, timer->tm_min, timer->tm_sec);
fclose(fp);
}
}
int main(){
get_data();
put_data();
return 0;
}
#include <stdio.h>
char data_file[] = "datetime.bin";
void get_data(){
FILE *fp;
if((fp = fopen(data_file, "rb")) == NULL){
printf("本プラグラムを実行するのは初めてですね\n");
}else{
int year, month, day, h, m, s;
fscanf(fp, "%d%d%d%d%d%d", &year, &month, &day, &h, &m, &s);
printf("前回は%d年%d月%d日%d時%d分%d秒でした\n", year, month, day, h, m, s);
fclose(fp);
}
}
void put_data(){
FILE *fp;
time_t current = time(NULL);
struct tm *timer = localtime(¤t);
if((fp = fopen(data_file, "wb")) == NULL){
printf("ファイルをオープンできません\n");
}else{
fprintf(fp, "%d %d %d %d %d %d\n", timer->tm_year + 1900, timer->tm_mon + 1, timer->tm_mday, timer->tm_hour, timer->tm_min, timer->tm_sec);
fclose(fp);
}
}
int main(){
get_data();
put_data();
return 0;
}
演習 13-11
#include <stdio.h>
int main(){
int i;
FILE *fp;
double data[10];
for(i = 0; i < 10; i++){
data[i] = 3.14159265358979323846;
}
if((fp = fopen("data.bin", "wb")) == NULL){
printf("ファイルをオープンできません\n");
}else{
fwrite(data, sizeof(double), 10, fp);
fclose(fp);
}
if((fp = fopen("data.bin", "rb")) == NULL){
printf("ファイルをオープンできません\n");
}else{
fread(data, sizeof(double), 10, fp);
for(i = 0; i < 10; i++){
printf("data[%d] = %23.21lf\n", i, data[i]);
}
fclose(fp);
}
return 0;
}
int main(){
int i;
FILE *fp;
double data[10];
for(i = 0; i < 10; i++){
data[i] = 3.14159265358979323846;
}
if((fp = fopen("data.bin", "wb")) == NULL){
printf("ファイルをオープンできません\n");
}else{
fwrite(data, sizeof(double), 10, fp);
fclose(fp);
}
if((fp = fopen("data.bin", "rb")) == NULL){
printf("ファイルをオープンできません\n");
}else{
fread(data, sizeof(double), 10, fp);
for(i = 0; i < 10; i++){
printf("data[%d] = %23.21lf\n", i, data[i]);
}
fclose(fp);
}
return 0;
}
演習 13-10
#include <stdio.h>
int main(){
int ch;
FILE *sfp;
FILE *dfp;
char sname[FILENAME_MAX];
char dname[FILENAME_MAX];
printf("コピー元ファイル名 : "); scanf("%s", sname);
printf("コピー先ファイル名 : "); scanf("%s", dname);
if((sfp = fopen(sname, "r")) == NULL){
printf("コピー元ファイルをオープンできません\n");
}else{
if((dfp = fopen(dname, "w")) == NULL){
printf("コピー先ファイルをオープンできません\n");
}else{
while((ch = fgetc(sfp)) != EOF){
if('A' <= ch && ch <= 'Z'){
ch -= 'A' - 'a';
}
fputc(ch, dfp);
putchar(ch);
}
fclose(dfp);
}
fclose(sfp);
}
return 0;
}
int main(){
int ch;
FILE *sfp;
FILE *dfp;
char sname[FILENAME_MAX];
char dname[FILENAME_MAX];
printf("コピー元ファイル名 : "); scanf("%s", sname);
printf("コピー先ファイル名 : "); scanf("%s", dname);
if((sfp = fopen(sname, "r")) == NULL){
printf("コピー元ファイルをオープンできません\n");
}else{
if((dfp = fopen(dname, "w")) == NULL){
printf("コピー先ファイルをオープンできません\n");
}else{
while((ch = fgetc(sfp)) != EOF){
if('A' <= ch && ch <= 'Z'){
ch -= 'A' - 'a';
}
fputc(ch, dfp);
putchar(ch);
}
fclose(dfp);
}
fclose(sfp);
}
return 0;
}
演習 13-9
#include <stdio.h>
int main(){
int ch;
FILE *sfp;
FILE *dfp;
char sname[FILENAME_MAX];
char dname[FILENAME_MAX];
printf("コピー元ファイル名 : "); scanf("%s", sname);
printf("コピー先ファイル名 : "); scanf("%s", dname);
if((sfp = fopen(sname, "r")) == NULL){
printf("コピー元ファイルをオープンできません\n");
}else{
if((dfp = fopen(dname, "w")) == NULL){
printf("コピー先ファイルをオープンできません\n");
}else{
while((ch = fgetc(sfp)) != EOF){
if('a' <= ch && ch <= 'z'){
ch += 'A' - 'a';
}
fputc(ch, dfp);
}
fclose(dfp);
}
fclose(sfp);
}
return 0;
}
int main(){
int ch;
FILE *sfp;
FILE *dfp;
char sname[FILENAME_MAX];
char dname[FILENAME_MAX];
printf("コピー元ファイル名 : "); scanf("%s", sname);
printf("コピー先ファイル名 : "); scanf("%s", dname);
if((sfp = fopen(sname, "r")) == NULL){
printf("コピー元ファイルをオープンできません\n");
}else{
if((dfp = fopen(dname, "w")) == NULL){
printf("コピー先ファイルをオープンできません\n");
}else{
while((ch = fgetc(sfp)) != EOF){
if('a' <= ch && ch <= 'z'){
ch += 'A' - 'a';
}
fputc(ch, dfp);
}
fclose(dfp);
}
fclose(sfp);
}
return 0;
}
演習 13-8
#include <stdio.h>
int main(){
int ch;
FILE *sfp;
FILE *dfp;
char sname[FILENAME_MAX];
char dname[FILENAME_MAX];
printf("コピー元ファイル名 : "); scanf("%s", sname);
printf("コピー先ファイル名 : "); scanf("%s", dname);
if((sfp = fopen(sname, "r")) == NULL){
printf("コピー元ファイルをオープンできません\n");
}else{
if((dfp = fopen(dname, "w")) == NULL){
printf("コピー先ファイルをオープンできません\n");
}else{
while((ch = fgetc(sfp)) != EOF){
fputc(ch, dfp);
putchar(ch);
}
fclose(dfp);
}
fclose(sfp);
}
return 0;
}
int main(){
int ch;
FILE *sfp;
FILE *dfp;
char sname[FILENAME_MAX];
char dname[FILENAME_MAX];
printf("コピー元ファイル名 : "); scanf("%s", sname);
printf("コピー先ファイル名 : "); scanf("%s", dname);
if((sfp = fopen(sname, "r")) == NULL){
printf("コピー元ファイルをオープンできません\n");
}else{
if((dfp = fopen(dname, "w")) == NULL){
printf("コピー先ファイルをオープンできません\n");
}else{
while((ch = fgetc(sfp)) != EOF){
fputc(ch, dfp);
putchar(ch);
}
fclose(dfp);
}
fclose(sfp);
}
return 0;
}
演習 13-7
#include <stdio.h>
int main(){
int ch, count = 0;
FILE *fp;
char file_name[256];
printf("ファイル名 : "); scanf("%s", file_name);
if((fp = fopen(file_name, "r")) == NULL){
printf("cannot open a file.\n");
return (-1);
}
while((ch = fgetc(fp)) != EOF){
if('0' <= ch && ch <= '9') count++;
}
printf("数字は%d回文字ありました。\n", count);
return 0;
}
int main(){
int ch, count = 0;
FILE *fp;
char file_name[256];
printf("ファイル名 : "); scanf("%s", file_name);
if((fp = fopen(file_name, "r")) == NULL){
printf("cannot open a file.\n");
return (-1);
}
while((ch = fgetc(fp)) != EOF){
if('0' <= ch && ch <= '9') count++;
}
printf("数字は%d回文字ありました。\n", count);
return 0;
}
登録:
投稿 (Atom)