如何将文件行中的字符保存到字符数组中?

时间:2017-02-26 18:26:45

标签: c arrays file-io

我正在尝试制作一个解密程序,其中我有一个文件,其中包含需要替换的字符(replace.txt)。 replace.txt的示例内容如下:

a X
b Y
c A
d C 
e I
f K
g J
h L
i P

......等等。

现在,我正在尝试读取这些行并保存原始字符(a)和替换字符(X),从replace.txt的第一行开始。但是,我只能读取替换字符而无法将原始字符保存到数组中。

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

int main() {
  FILE * file;
  FILE * fileTwo;
  file = fopen("in.txt","rt"); // This is the encrypted text file
  fileTwo = fopen("replace.txt","rt");
  char line[4];
  char replaceChar[1];
  char orginialChar[1];
    while(fgets(line, 4, fileTwo) != NULL) {
      strtok(line, " ");
      printf("The line is: %s \n",line);
      strcpy(originalChar, &line[0]); // Trying to get the "a"
      strcpy(replaceChar, &line[2]); // Trying to get the "X"
      printf("Original Char is: %s \n",originalChar);
      printf("Replace Char is: %s \n",replaceChar);
    }
  return 0;
}

第一次运行的输出是:

The line is: a
Original Char is: 
Replace Char is: X

之后它完全崩溃了。我怎么能解决这个问题?提前谢谢!

1 个答案:

答案 0 :(得分:0)

我需要做的是将fgets和我的行数组的大小增加到5而不是3,因此可以添加新行和空字符,而不会这样做,文件读取完全错误。

然后,我不得不增加原始字符的大小并将字符数组替换为[2],以允许添加空终结符字符。