当使用fopen(arg [1]," r")和fgets()时,输出保存为字符串或数组?

时间:2014-04-14 20:44:01

标签: c fopen fgets

#include<stdio.h>
#include<ctype.h>

int main(int argc, char *argv[]) {
  int i = 0;
  char in[100], mychar[100];
  FILE *file;
  file = fopen(argv[1], "r");
  fgets(mychar, 100, file);
  while (in[i]) {
    mychar[i] = in[i];
    putchar(toupper(mychar[i]));

    i++;
  }
  return 0;
}


我有另一个名为file.c的文件,我在其中写了“abcd”。 该程序将读取文件的内容并将其更改为大写字母。当我打字时,我不知道为什么

./a.out file.c

什么都没有出来。怎么了?我想也许当使用fopen(arg [1],“r”)和fgets会使mychar成为一个字符串而不是数组?请看看。谢谢。

2 个答案:

答案 0 :(得分:1)

您将文件的内容读入mychar,但要测试未初始化的in char数组。要解决此问题,您只需切换阵列

即可
while (mychar[i]) {
    in[i] = mychar[i];
    putchar(toupper(in[i]));
    i++;
}

但您也可以跳过复制并直接打印mychar的内容

while (mychar[i]) {
    putchar(toupper(mychar[i]));
    i++;
}

答案 1 :(得分:0)

fgets(in,sizeof(in),file);
while (in[i]){
    mychar[i]=toupper(in[i]);
    putchar (mychar[i]);