住所録保守のプログラムの宿題なんですが、ファイルオープンを関数にせずには動かせるのですが、関数にするとエラーが山のようにでます。参考書もよんでるのですがよくわかりません。明日提出なのでよろしくお願いします。
関数にする前の考えたプログラムは、 struct aaa{
char b char c
}; FILE *fp; struct aaa[100];
if((fp=fopen("c:/a.txt","rt"))==NULL) exit(0);です。 宿題は f_open(char *name,char *mode) を使って指定されたファイルを指定されたモードで開くという関数を作りなさい。 引数 ポインタ nameはファイル名/mode はオープンモード 戻り値なし という問題です。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
「No.2の方への回答に対する補足」を見て、アドバイスをさせていただきます。
エラー原因と解決策としては、以下を参考にして下さい。
1.関数”file_open”内で定義している”fp”は、その関数内でしかアクセスできないのにmain関数からアクセスしている。
-> ”fp”をグローバル変数にする。
(”FILE *fp;”の行を構造体定義の直後に移動する。)
2.main関数から関数”file_open”を呼び出す際のパラメータの渡し方がおかしい。
-> 文字列定数を渡すときはダブルコーテーション("")で囲む。
(c:/a.txt, rt -> "c:/a.txt", "rt")
以上のように変更すればよいと思います。
最後に、少々専門的で申し訳ありません。
ありがとうございます。
少し考えてみたら、なんとか糸口がみえてきました。
もう少し考えたらできそうなので・・・
自分の力でがんばってみたいと思います。
No.2
- 回答日時:
まぁまずは、そのエラーが山のように出るプログラムをここに書いてください。
そうしないとアドバイスのしようがありません。
この回答への補足
#include<stdio.h>
#include<stdlib.h>
#define n_max 100
/* 構造体 */
struct aaa{
int b;
char c[20];
int d;
};
/* ファイルオープン */
void file_open(char *name,char *mode)
{
FILE *fp;
struct aaa x[n_max];
if((fp=fopen(name,mode))==NULL) ;
printf("%s がオープンできません。\n",name);
exit(0);
};
/* ファイル一覧 */
main()
{
file_open(c:/a.txt, rt);
printf("\n\n * 一覧表示 *\n\n");
printf(" ______________________________\n");
printf(" |番号| 氏 名(漢字) |データ|\n");
while(feof(fp)==0)
{
fscanf(fp,"%d%s%d",&x.a,&x.b,&x.c);
if(feof(fp)!=0) break;
と途中までですが、根本的に理解できていないので、おかしなことをしているのはわかるんですが、
よろしくお願いいたします。
No.1
- 回答日時:
質問がいまいち・・・
1.関数にせずには動かせる
ファイルの読み込みができてる?
2.関数にするとエラーが・・・・
成り行きがわかりません
とりあえず質問では構造体のメンバ変数宣言には「;」をつけてください。そういうことでもない気もしますが・・・
すみません。とりあえず、関数が苦手?というか、
わからないので登録・修正・削除・一覧表示とサブルーチンの部分について作りました。
たぶん、各ルーチンでファイルオープンは共通だから簡単にするために関数にしなさい!
というものなのですが(頭が弱くて先生の課題が理解できなくて(@0@)、
教えていただく立場なのに説明がうまくできなくてすみません・・・)
とりあえず、自分の作ったプログラムのファイルオープン部分を関数に変えてみようと、
支持があったとおり、f_open(・・,・・)というのを使って関数を作ったのですが、
理解できてないのでファイルオープンができない状態です。よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgetsで2行目から文字化け
-
ファイルサイズ指定し、ファイ...
-
テキストファイルの各行の文字...
-
ファイルオープンの関数につい...
-
ファイル内のデータを1行削除...
-
C言語の質問です。 100人のある...
-
32-bit real 画像を読み込む方法
-
C言語初心者の質問失礼します。
-
どんなプログラムを書いても指...
-
コンパイルするときに、ファイ...
-
fopenで別ディレクトリにファイ...
-
コマンド(例えばls)の出力結果...
-
フルパスから最後のディレクト...
-
Microsoft VBAで2GBを超えるフ...
-
バッファとは何ですか
-
エラー:ストリームの終わりを...
-
「UNCパスはサポートされません...
-
VB.NETで他のプロジェクトで作...
-
csvファイルを開かずに文字を検...
-
EXCEL VBAでテキストファイルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内のデータを1行削除...
-
バイナリファイルをテキストフ...
-
fgetsで2行目から文字化け
-
VBSで指定行に挿入
-
テキストファイルの行数を取得...
-
c言語 2つのファイルを行ご...
-
改行までの一文字ずつのファイ...
-
freadとfwrite
-
fopenで開いたファイルのサイズ...
-
続・EOF判定されない
-
テキストファイルの文字列の削除
-
巨大なテキストファイル(可変...
-
ファイルサイズ指定し、ファイ...
-
fprintfで出力するファイルのパ...
-
ハフマン符号のプログラム
-
winsock recvでの文字化け
-
0x00をファイル出力
-
複数テキストファイルを読み込...
-
C言語でのtxt検索
-
VC++6でfgets関数の変わりにな...
おすすめ情報