#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成为一个字符串而不是数组?请看看。谢谢。
答案 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]);