#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/