繁体   English   中英

如何在 C 中使用 fopen 打开文件?

[英]How to open a file with fopen in C?

我创建了一个程序来打开文件,读取内容并打印出来。 但是,“fopen”返回“NULL”。 在“fopen”中,我尝试使用 r,使用 a+,但没有。 写入 nella 'fopen' 的文件存在,所以我不知道为什么它返回 NULL。

这是代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
#include <limits.h>
#include <time.h>
#include <errno.h>
#include <iso646.h>
#include <stddef.h>


int main() {

FILE *fp=fopen("prova.txt", "a+");
int vett[50];
int i;

if (fp!=NULL) {
    printf("Il file è stato aperto con successo!");
    
}else{

    printf("Il file non è stato aperto con successo");
    return 0;

}

for (i = 0; !feof(fp); i++) {

    fscanf(fp, "%d", &vett[i]);
    printf("\n%d\n",vett[i]);
    
}

return 0;

}

你能帮助我吗?

使用prova.txt文件的绝对路径 除非您知道当前工作目录是什么,并且知道您需要将其打印出来,否则相对路径是没有意义的。 例如,使用getcwd获取当前工作目录。 它可能不会像你想象的那样。

如果fopen返回 NULL,则无法打开该文件(大部分时间是因为它不存在)。 确保该文件与可执行文件位于同一目录中。

您想从文件中读取,因此您应该使用"r"模式打开它。

你的循环是错误的,你可能想要这个:

for (i = 0; i < sizeof(vett)/sizeof(vett[0]); i++) {

    if (fscanf(fp, "%d", &vett[i]) == EOF)
      break;

    printf("\n%d\n",vett[i]);        
}

注意: sizeof(vett)/sizeof(vett[0])vett数组的元素数(本例中为 50)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM