我的输出总是打印'。'在我期待输出之前。 CS50 PSET2

时间:2016-11-05 10:52:13

标签: c cs50

#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");
}

它应该取你的全名并返回你的名字缩写。它返回它应该的内容,除了它总是在我的输出之前返回一个句点。

1 个答案:

答案 0 :(得分:0)

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

您应该从条目号1开始枚举argv。此外,您应该将char强制转换为(unsigned char),因为toupper()仅针对类型{的所有值进行了定义{1}}和特殊值unsigned char,如果默认情况下已签名,则不是EOF类型的潜在负值。

char