为什么我在C语言中不能用fgets读取字符串?

问题描述 投票:0回答:1

我有这样的代码工作。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
     FILE *File_fp = fopen("Example.dat", "w");
     char Temporary[50];
     if(!File_fp)
     {
        printf("An error occurred while creating the file.\n");
        exit(1);
     }

     fprintf(File_fp, "This is an example.\n");
     fgets(Temporary, 49, File_fp);

     printf("It was \"%s\"\n", Temporary);
     return EXIT_SUCCESS;
 }

我在文件 "Example.dat "中打印了 "This is an example.",我想通过上面的代码从文件中再次读取它,但输出中没有字符串。为什么会这样?请帮助我。

c file fgets
1个回答
0
投票

要读取一个文件,你必须使用 "r "模式。例子:你在这段代码中犯了一个错误。FILE *File_fp = fopen("Example.dat", "r");

你在这段代码中犯了一个错误. 如果创建文件失败。fopen() 函数将返回 NULL. 那么文件指针的值将是 NULL所以,在你的代码中 如果节 将在文件成功创建时执行。所以,把你的代码改成这样。

if(File_fp)
 {
  printf("An error occurred while creating the file.\n");
  exit(1);
 }

只要把 (!)不合逻辑 符号。


3
投票

你正在以只写模式("w")打开文件。使用 "w+"进行读写。

FILE *File_fp = fopen("Example.dat", "w+");
© www.soinside.com 2019 - 2024. All rights reserved.