0

このファイルを開く必要がありますが、開かれておらず、理由がわかりません:

#include<stdio.h>

void copy();

int main(void)
{
    copy();

    return 0;
}

void copy()
{
    FILE *src = fopen("srcc.txt", "r+");

    if(!src)
    {
        printf("It was not possible to open the file");
        return;
    }
}

if 条件を渡すだけでメッセージが表示it was not possible to open the fileされ、ファイルは作成されません。

4

3 に答える 3

1

errnostrerror()を使用して、特定のエラー コードを取得できます。ほとんどのライブラリ実装のfopen()では、失敗時に errno 変数もシステム固有のエラー コードに設定されます。

次のようなものを試すことができます:

#include <errno.h>
...
...
FILE *src = fopen("srcc.txt", "r+");
if(!src)
{
    printf("ERROR: %d - %s\n", errno, strerror(errno)); // <---- This will print out some 
                                                        // useful debug info for you
    printf("It was not possible to open the file");
    return;
}

errno.h一般的なエラーコードの定義のリストがあり、印刷できる文字列にstrerror()変換されます...errno

この場合、表示される可能性のあるコードには、次のいくつかが含まれます (errno.h から逐語的にコピーしただけで、実際の値は省略しました...)。

#define EPERM  /* Operation not permitted */
#define ENOENT /* No such file or directory */
...
#define EACCES /* Permission denied */
...
于 2013-06-27T11:17:16.613 に答える
0

ファイルが存在する場合、それはおそらく読み取り専用です...書き込み可能でないファイルに「r +」を使用することはできません。「r」だけでなく「r+」が本当に必要ですか?

于 2013-06-27T11:18:40.720 に答える
0

ファイルが見つからない可能性があります。ファイルのさまざまなコピーを作成し、さまざまなフォルダーに配置することをお勧めします。

于 2013-06-27T11:20:05.933 に答える