c - 文本文件中的数据读取为 0/Null

标签 c text-files

我正在编写一个 C 程序来从 2 个文本文件读取数据并将它们合并到 1 个文本文件中。读取文本文件时,我打印这些值以确保获得正确的值,但出现的所有值要么是 0,要么是 Null。

这是代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define str_len 100

//Question 2A
typedef struct {
  int atmNum;
  char name[str_len];
  char symbol[str_len];
  float atmWeight;
} PeriodocElement;

void SortedMergedFile (FILE *file1, FILE *file2);

int main () {
  FILE *file1;
  file1 = fopen("1.txt", "r");
  FILE *file2;
  file2 = fopen("2.txt", "r");

  if (file1 == NULL) {
    printf("FILE 1 DOES NOT EXIST\n");
  }
  if (file2 == NULL) {
    printf("FILE 2 DOES NOT EXIST\n");
  }
  else {
    SortedMergedFile(file1, file2);
  }
}

void SortedMergedFile (FILE *file1, FILE *file2) {
  PeriodocElement elements [150];
  int i = 0;

  while (i != 4) {
    fscanf(file1, "%d  %s  %s %f", &elements[i].atmNum, elements[i].name, elements[i].symbol, &elements[i].atmWeight);
    i++;

    printf("\n%d %s %s %4.2f", elements[i].atmNum, elements[i].name, elements[i].symbol, elements[i].atmWeight);
  }
}

这是文本文件:

08  Serium  Se 40.08
20  Sodium  Na 22.99
45  gatium  Ga 23.90
56  Manion  Ma 45.99

如果有人能发现我做错了什么,我将不胜感激。

最佳答案

  1. 您正在阅读 element[i] 的组件。
  2. 然后你增加i
  3. 然后你打印 element[i] 的组件(其中 i 现在是一个更大的元素),而那些当然还没有已初始化。

关于c - 文本文件中的数据读取为 0/Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50273518/

相关文章:

从 LPVOID 转换为结构体 - C

objective-c - 搜索文本文件 - Cocoa

dns - 添加 DNS TXT 记录是否会减慢加载时间?

c++ - 读取一个txt文件

Python write() 函数将先前的数据写入下一个文件

string - 使用vbscript将汉字写入文本文件

c++ - TBB 与本土工作队列

c - 如何创建一个 unicode 编辑控件来接受代码大于 127 的字符

c - 为什么我的父进程在 exec() 之后也会崩溃?

c++ - 检查一个节点是否在有向图的节点的路径中