#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作为字符串而不是数组?请看看。谢谢。

最佳答案

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

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


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

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

关于c - 使用fopen(arg [1],“r”)和fgets()时,输出是否另存为字符串或数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23070044/

10-10 18:23