我的输出总是打印“。”在我期望输出之前。 CS50 PSET2

My output always prints '.' before my expect output. CS50 PSET2

#include <stdio.h>
#include <cs50.h> 
#include <string.h> 
#include <ctype.h>

int main(int argc, string argv[])
{
    for (int i = 0; i < argc; i++)
    {
        printf ("%c", toupper(argv[i][0]));
    }
    printf ("\n");
}

它应该包含您的全名和 return 您的姓名首字母。它 return 是它应该做的,除了它总是在我的输出之前 return 是一个句点。

您打印 argv 字符串数组的每个元素的第一个字符。第一个元素 argv[0] 是可执行文件的名称。您可能将可执行文件调用为 ./myprogram,因此首先打印的是 .

您应该从条目号 1 开始枚举 argv。此外,您应该将 char 转换为 (unsigned char),因为 toupper() 仅针对所有值定义类型 unsigned char 和特殊值 EOF,而不是 char 类型的潜在负值,如果它是默认签名的话。

#include <ctype.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
    for (int i = 1; i < argc; i++) {
        putchar(toupper((unsigned char)argv[i][0])));
    }
    putchar('\n');
    return 0;
}