繁体   English   中英

以下语句如何产生空格?

[英]How does following statement produce spaces?

我的程序“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));
}

它也在每个单词之间放置了空格。 这怎么可能?

文档

int toupper(int c);

转换c到如果大写形式c为小写字母,并有一个大写形式。 如果不可能进行这样的转换,则返回的值c不变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM