構造体、配列、ファイル操作について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hnkto
記事: 10
登録日時: 6年前

構造体、配列、ファイル操作について

#1

投稿記事 by hnkto » 6年前

ファイルから著者名などを読み込み、表示させたいのですが、ファイルオープンエラーとなってしまいます。どこがおかしいのかわからないので、分かる方いましたらお願いします。

コード:

#include<stdio.h>

typedef struct{
    char author[20];
    char title[20];
    char publisher[20];
    char isbn[20];
    int price;
}data;

void list(data d[],int n) /*一覧表を作る関数*/
{
    int i;
    printf("著者名   タイトル   出版社   ISBN   価格  \n");
    for(i=0;i<n;i++)
    {
        printf("%s  %s  %s  %s  %d\n",d[i].author,d[i].title,d[i].publisher,d[i].isbn,d[i].price);
    }
}

void find(data d[]) /*本を探す関数*/
{
    /*ここはまだ書いていないので、大丈夫です。*/
}

int main(void)
{
    int i,n;
    FILE *fp;
    if((fp=fopen("books-utf.txt","r"))==NULL){
        printf("ファイルオープンエラーです。\n");
        exit(1);
    }
    
    data d[100];
    
    for(i=0;i<100;i++)
    {
        while(fscanf(fp,"%s %s %s %s %d",d[i].author,d[i].title,d[i].publisher,d[i].isbn,&d[i].price)!=EOF){
            break;
            }
    }
    
    n=i;
    
    list(d,n);
    
    fclose(fp);
    
    return 0;
}


box
記事: 2002
登録日時: 13年前

Re: 構造体、配列、ファイル操作について

#2

投稿記事 by box » 6年前

hnkto さんが書きました:ファイルから著者名などを読み込み、表示させたいのですが、ファイルオープンエラーとなってしまいます。どこがおかしいのかわからないので、分かる方いましたらお願いし
ファイルの置き場所は適切ですか?
開発環境によって、使うファイルをどこのフォルダーに置いておく必要があるかは異なります。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

hnkto
記事: 10
登録日時: 6年前

Re: 構造体、配列、ファイル操作について

#3

投稿記事 by hnkto » 6年前

.cのファイルと同じファイル内にあるのですが、、、

maru
記事: 150
登録日時: 13年前

Re: 構造体、配列、ファイル操作について

#4

投稿記事 by maru » 6年前

環境が書いていないので正確ではありませんが、ソースコード(*.c)と同じフォルダではだめでしょう。
実行ファイルが生成されたフォルダに置く必要があります。
(基本的には、実行ファイルはソースファイルがあったフォルダを知りません。)

返信

“C言語何でも質問掲示板” へ戻る