【发布时间】:2020-03-23 05:46:19
【问题描述】:
我的程序“upper”试图做的是使字母大写。它从命令行获取一个文件作为 argv;然后读取它,然后将它们变为大写。
示例:example.txt 文件中的“我想知道它是否有效”。在命令行中:
C:\Users\...>upper example.txt
I WONDER IF IT WORKS
这是我首先使用的代码:
int main (int argc, char *argv[]){
FILE * fp;
int ch;
if ((fp = fopen (argv[1] , "r+")) == NULL) {
fprintf (stderr , "Can not be opened.");
exit(EXIT_FAILURE);
}
while((ch = getc(fp)) != EOF){
if (isalpha(ch))
putchar(toupper(ch));
else
putchar(' ');
}
fclose(fp);
return 0;
}
它有效,但我看到了一个更简洁的版本,不需要else 语句。
while((ch = getc(fp)) != EOF){
putchar(toupper(ch));
}
它也在每个单词之间放置了空格。这怎么可能?
【问题讨论】: