検索結果 35 件

by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: scanfは予期しない入力があると無限ループに陥る
返信数: 8
閲覧数: 5969

Re: scanfは予期しない入力があると無限ループに陥る

bool run = true; int data = 0; while( run ){ char select[ 64 ] = {}; scanf("%s", &select); if( sscanf( select, "%d", &data ) == 1 ) run = false; } //scanf("%d", &select); switch(data){ case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: PMP_write_indication(s_pmp_schedu...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: scanfは予期しない入力があると無限ループに陥る
返信数: 8
閲覧数: 5969

Re: scanfは予期しない入力があると無限ループに陥る

以下のようにしましたが、うまく動いてくれないようです。 bool run = true; int data = 0; while( run ){ char select[ 64 ] = {}; scanf("%d", &select); if( sscanf( select, "%d", &data ) == 1 ) run = false; } //scanf("%d", &select); switch(select){ case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: PMP_...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: scanfは予期しない入力があると無限ループに陥る
返信数: 8
閲覧数: 5969

scanfは予期しない入力があると無限ループに陥る

こんにちは。

scanfは予期しない入力があると無限ループに陥るようですが、
文字などが入力された場合どのように無限ループを回避すればよいですか?
実際にコードを示してくださるとありがたいです。
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体とポインタについて
返信数: 7
閲覧数: 2897

Re: 構造体とポインタについて

box さんが書きました:解決したとのことですが、今のdisp_record関数は
「単に出力しているだけ」で、出力したデータはこの関数を抜けた後、
どこにも残っていないことを理解しておいてください。
他の機能を実現しようとすると、その時点で大変お困りになるような気がします。
アドバイスありがとうございます。他の機能についても、色々と試行錯誤して頑張りたいと思います。
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: 改善点をアドバイスして下さい。
返信数: 8
閲覧数: 3279

Re: 改善点をアドバイスして下さい。

色々とアドバイスありがとうございました。またよろしくお願いします。
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体とポインタについて
返信数: 7
閲覧数: 2897

Re: 構造体とポインタについて

//読み込みファイル #include <stdio.h> #include <stdlib.h> #define END_FILE 0 //ファイルの終端 #define MENU 0 //メニューの表示 #define ADDR 1 //新規レコードの追加 #define UPDATER 2 //更新 #define DELR 3 //削除 #define DISPR 4 //一覧表示 #define CANCEL 5 //キャンセル #define END 5 //キャンセル #define NO 2 //いいえ #define ERROR -1 //エラーの時 #define NOE...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体とポインタについて
返信数: 7
閲覧数: 2897

Re: 構造体とポインタについて

softya(ソフト屋) さんが書きました:前回の後でコメントしたんですが読んでもらってますか?
「putchar について • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=11095
読ませて頂きました。ありがとうございます。おかげで理解する事が出来ました。
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体とポインタについて
返信数: 7
閲覧数: 2897

構造体とポインタについて

こんばんは。質問があります。構造体とポインタについてです。以下コードを示します。 //読み込みファイル #include <stdio.h> #include <stdlib.h> #define END_FILE 0 //ファイルの終端 #define MENU 0 //メニューの表示 #define ADDR 1 //新規レコードの追加 #define UPDATER 2 //更新 #define DELR 3 //削除 #define DISPR 4 //一覧表示 #define CANCEL 5 //キャンセル #define END 5 //キャンセル #define NO 2 //...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: putchar について
返信数: 4
閲覧数: 2076

Re: putchar について

int型にするために、'0'を足しているんですね。

アドバイスありがとうございました。
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: putchar について
返信数: 4
閲覧数: 2076

putchar について

こんにちは。putcharについて質問があります。 基本情報試験の問題で、以下のようなコードがあります。 putchar('0' + (x * 10/y)); 上のコードで'0'を足している意味がわかりません。'0' を足さない場合は、例えばx=3、y=8の時、計算結果が変です。数字ではありません。 また、putchar に渡す引数は、int型のはずですが、'0' は、int 型なのでしょうか? また、putchar('0' + (x/y * 10)); ですが、例えばx=3、y=8の時、出力結果が0です。少数の足し算で暗黙の型変換されるからでしょうか?それにしても、結果が0になる理由がわかり...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: 改善点をアドバイスして下さい。
返信数: 8
閲覧数: 3279

Re: 改善点をアドバイスして下さい。

[quote="涼雅"]

コード:

#define MENU 0
#define ADDR 1
#define UPDATER 2
#define DELR 3
#define DISPR 4
#define CANCEL 5
列挙体にしたほうがわかりやすいかと。

列挙体で書こうとすると、うまくいきません。どのように書けばよいのでしょうか?

> scanf("%s",member[0].name); //名前
バッファオーバーフローの危険性。

バッファオーバーフロの危険性とはどういうことでしょうか?どうすればよいのでしょうか?
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: 改善点をアドバイスして下さい。
返信数: 8
閲覧数: 3279

改善点をアドバイスして下さい。

こんにちは。以下プログラムですが、ここを改善した方がいいよという箇所はありますでしょうか?アドバイスよろしくお願いします。 //読み込みファイル #include <stdio.h> #include <stdlib.h> #define MENU 0 #define ADDR 1 #define UPDATER 2 #define DELR 3 #define DISPR 4 #define CANCEL 5 #define NO 2 #define ERROR -1 #define NOERROR 0 FILE *fp; //ファイルポインタ char *fname = "comma.cs...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル書き込みを関数化したい
返信数: 13
閲覧数: 6240

Re: ファイル書き込みを関数化したい

このフォーラムのルールとして、解決した場合は最終的なソースコードや解決した方法を明記していただく必要があります。 同じ事で困っている人の為ですのでお願いします。 以下コードです。 //読み込みファイル #include <stdio.h> #include <stdlib.h> FILE *fp; //ファイルポインタ char *fname = "comma.csv"; //ファイル名 int ret = 0; //関数の返り値 int choice=0; //キーボード入力値格納変数 int i=0; //構造体配列の番号 //会員メンバ構造体 struct member { int n...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル書き込みを関数化したい
返信数: 13
閲覧数: 6240

Re: ファイル書き込みを関数化したい

こんにちは、ookamiです。 要するに、 fprintf(fp,"%d,%s,%s,%s,%s\n",member .no,member .name,member .adress,member .tel,member .mail); という行がそっくりそのまま何度も出てくるので関数にまとめたい、ということですよね? 関数化することは可能です。 『そっくりそのまま』出てくるからには、そのままの関数を作ればいいです。 > それらは、消してグローバル変数で一括管理します。 とのことですが、その状態のソースコードを貼ってください。 今のままですと、グローバル変数もローカル変数もごっちゃなので、空の...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル書き込みを関数化したい
返信数: 13
閲覧数: 6240

Re: ファイル書き込みを関数化したい

関数化するのは無理ですか?
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル書き込みを関数化したい
返信数: 13
閲覧数: 6240

Re: ファイル書き込みを関数化したい

struct member member[20]={0};//構造体メンバ宣言 は、グローバル変数としています。 おや?そうすると、そのグローバル変数と /*新規登録*/ int add_record() { struct member member[20]={0}; //メンバ構造体配列の宣言 /*更新処理*/ int update_record() { struct member member[20]={0}; //メンバ構造体配列の宣言 /*削除処理*/ int del_record() { struct member member[20]={0}; //メンバ情報構造体配列の宣言 /...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル書き込みを関数化したい
返信数: 13
閲覧数: 6240

Re: ファイル書き込みを関数化したい

Ryo さんが書きました:失敗したままでいいので、現在作ったint csv_write()を提示してみてください
int csv_write(int i)
{
fprintf(fp,"%d,%s,%s,%s,%s\n",member.no,member.name,member.adress,member.tel,member.mail);
}

です。struct member member[20]={0};//構造体メンバ宣言 は、グローバル変数としています。
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル書き込みを関数化したい
返信数: 13
閲覧数: 6240

Re: ファイル書き込みを関数化したい

涼雅 さんが書きました:うまくいきませんとのことですが、どのようにうまくいかないのですか?詳しくお願いします。
また、csv_writeは、fprintfのみを関数化するのですか?
それともfopenからfcloseまでを関数化するのですか?
fprintf のみを関数化しますが、うまく動いてくれません。値が入ってないようです。空のファイルが出来上がります。
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル書き込みを関数化したい
返信数: 13
閲覧数: 6240

ファイル書き込みを関数化したい

こんにちは。 以下コードです。 //読み込みファイル #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *fp; //ファイルポインタ char *fname = "comma.csv"; //ファイル名 //会員メンバ構造体 struct member { int no; char name[20]; char adress[20]; char tel[20]; char mail[20]; }; /*メイン関数*/ main() { int no; //数字の入力値 int ret; //関数の返り値 print...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル中の選択1データの削除処理
返信数: 12
閲覧数: 9509

Re: ファイル中の選択1データの削除処理

削除処理は以下のようになりました。 #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *fp; char *fname = "comma.csv"; struct member { int no; char name[20]; char adress[20]; char tel[20]; char mail[20]; }; main() { int no; int ret; printf("---会員管理システムメニュー---\n\n"); printf("1.新規登録\n"); printf("2.変更\n"); ...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル中の選択1データの削除処理
返信数: 12
閲覧数: 9509

Re: ファイル中の選択1データの削除処理

softya(ソフト屋) さんが書きました:削除自体は、配列にして前に詰めるとかリスト構造にして1つ抜くとかが一般的です。
書き出しは配列全体を書き出せばよいでしょう。
アドバイスありがとうございます。そういうやり方でやらせていただきました。
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル中の選択1データの削除処理
返信数: 12
閲覧数: 9509

Re: ファイル中の選択1データの削除処理

Ryo さんが書きました:①キーボードから、削除したいNoを入力する。
②ファイルからNo,名前、住所、電話番号、メールアドレス等のデータをすべて読み込む
③ファイルに、消したい番号以外のデータを書き込む

これでどうでしょうか?

具体的には③にて、
for文などでループしながら書き込む際、対象のNOだけ、continueなどで処理を飛ばす
このやり方で作成させていただきました。ありがとうございます!
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル中の選択1データの削除処理
返信数: 12
閲覧数: 9509

Re: ファイル中の選択1データの削除処理

non さんが書きました:メニューですが、現在は

---会員管理システムメニュー---
1.新規登録
2.変更
3.削除
4.一覧表示

これに、
5.データの読み込み
6.データの保存
をつけたらどうでしょうか?

5.データの読み込みは、メニューに入る前に、自動的に読み込んでおいてもよいと思います。
いずれにしても、データを読み込みながら、削除したいデータを探す今のやり方は、あまり
よいとは思えません。
そうですね。そういう作りに変更したいと思います。ありがとうございます。
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル中の選択1データの削除処理
返信数: 12
閲覧数: 9509

Re: ファイル中の選択1データの削除処理

涼雅 さんが書きました:stdlibのremove関数が使えるみたいです
remove関数はファイルを削除するためのものですよね?
今回は、csvファイル中の1データを削除したいのです。
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル中の選択1データの削除処理
返信数: 12
閲覧数: 9509

ファイル中の選択1データの削除処理

こんにちは。 ファイル中の選択1データを削除したいと思っております。 ①キーボードから、削除したいNoを入力する。 ②ファイルからNo,名前、住所、電話番号、メールアドレス等のデータを読み込み、構造体に代入する。 ③削除したいNoの構造体データを削除する。 ④ファイルに構造体データを書き込む。 #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *fp; char *fname = "comma.csv"; struct member { int no; char name[20]; char adress[20]; ...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルデータの更新処理
返信数: 28
閲覧数: 9174

Re: ファイルデータの更新処理

色々と質問させていただきましたが、なんとか解決しました。ありがとうございました。 最終コード↓ #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *fp; char *fname = "comma.csv"; struct member { int no; char name[20]; char adress[20]; char tel[20]; char mail[20]; }; main() { int no; int ret; printf("---会員管理システムメニュー---\n\n"); printf("...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルデータの更新処理
返信数: 28
閲覧数: 9174

Re: ファイルデータの更新処理

ありがとうございます。問題を解決することが出来ました。

しかし、fp = fopen(fname,"a"); の部分で上書き禁止にして、

fprintf(fp,"%d,%s,%s,%s,%s",no,name,adress,tel,mail); でファイルに書き込みを行っているのですが、

2行のデータが1行続きのデータになり、なにやらおかしたデータになってしまいます。

例)1,takesihta,明石市,090-3222-1234,a@yahoo.co.jp,takeuti,神戸市,090-3245-3221,v@yahoo.co.jp
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルデータの更新処理
返信数: 28
閲覧数: 9174

Re: ファイルデータの更新処理

main関数を再帰的に呼び出している(103行目)のは意図したことなのでしょうか? 普通のプログラムでは、自分でmainを呼び出すようなことはしません。 想像するに、update_record関数からmain関数へ戻りたいだけなのでしょうが、それならreturnすべきです。 期待動作としては、意図してやっていることです。 #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *fp; char *fname = "comma.csv"; struct member { int no; char name[20]; ch...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルデータの更新処理
返信数: 28
閲覧数: 9174

Re: ファイルデータの更新処理

#include <stdio.h> #include <stdlib.h> #include <string.h> FILE *fp; char *fname = "comma.csv"; struct member { int no; char name[20]; char adress[20]; char tel[20]; char mail[20]; }; main() { int no; int ret; printf("---会員管理システムメニュー---\n\n"); printf("1.新規登録\n"); printf("2.変更\n"); printf("3.削除\n");...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルデータの更新処理
返信数: 28
閲覧数: 9174

Re: ファイルデータの更新処理

for(i=0;i<2;i++) { if((fscanf(fp,"%d,%[^,],%[^,],%[^,],%s",&(member[i].no),member[i].name,member[i].adress,member[i].tel,member[i].mail)) != EOF) { printf("%s\n",member[i].name); printf("%s\n",member[i].adress); printf("%s\n",member[i].tel); printf("%s\n",member[i].mail); } } 上記で、2つ目のデータも表示することが出来ま...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルデータの更新処理
返信数: 28
閲覧数: 9174

Re: ファイルデータの更新処理

non さんが書きました:CSVのファイルの行の最後にカンマはありますか?
CSVのファイルの行の最後にカンマを入れましたがだめですね。
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルデータの更新処理
返信数: 28
閲覧数: 9174

Re: ファイルデータの更新処理

#include <stdio.h> #include <stdlib.h> #include <string.h> FILE *fp; char *fname = "comma.csv"; struct member { int no; char name[20]; char adress[20]; char tel[20]; char mail[20]; }; main() { int no; int ret; printf("---会員管理システムメニュー---\n\n"); printf("1.新規登録\n"); printf("2.変更\n"); printf("3.削除\n");...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルデータの更新処理
返信数: 28
閲覧数: 9174

Re: ファイルデータの更新処理

もっと具体的に次にやるべき事を教えていただきますか?
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルデータの更新処理
返信数: 28
閲覧数: 9174

Re: ファイルデータの更新処理

/* 新規登録 */ #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *fp; char *fname = "comma.csv"; main() { int no; int ret; printf("---会員管理システムメニュー---\n\n"); printf("1.新規登録\n"); printf("2.変更\n"); printf("3.削除\n"); printf("4.一覧表示\n"); printf("No? "); ret=scanf("%d",&no); if(no == 1) { ret =...
by taz
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルデータの更新処理
返信数: 28
閲覧数: 9174

Re: ファイルデータの更新処理

同じように書くと思います。

詳細検索ページへ移動する