如何在C输入中大写第一个字符?

时间:2017-11-17 12:18:06

标签: c

我的输出不是大写字母('')之后的大写下一个参数。

int main(void)
{
    int i = 0;
    int flag = OUT;
    char name[100];
    int leng = strlen(name);

    printf("Value pls: \n");
    fgets(name, 100, stdin);
    printf("%c", toupper(name[0]));

    while(name[i])
    {
        printf("%c", name[i + 1]);
        if(i == ' ')
        {
            printf("%c", toupper(name[i + 1]));
        }
        i++;
    }
}

它总是显示这样的事情: 值pls: 琼史密斯 乔恩史密斯

单词“smith”总是小写的。

2 个答案:

答案 0 :(得分:5)

"小提琴"与循环计数器通常是不明智的。这绝对是你想在这里做的工作。 canonic方法使用旗帜。粗略轮廓:

TNotifyEvent

另一方面,问题的一部分是这一行:

TNotifyEvent

int wasspace = 1; // to capitalize the *first* character for (i=0; name[i]; ++i) { printf("%c", wasspace ? toupper((unsigned char)name[i]) : name[i]); wasspace = (name[i] == ' '); // maybe better: wasspace = isspace((unsigned char)name[i]); // so you handle tabs, newlines etc. as well } 是您的循环计数器, if(i == ' ') 中的i个字符。将它与空间进行比较是没有意义的。

答案 1 :(得分:0)

这是一个很好的机会,可以了解更多关于其他操作员的信息 - 在这种情况下"?:":

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

int main(void)
  {
  char name[100];

  printf("Value pls: \n");
  fgets(name, 100, stdin);

  for(int i = 0 ; i < strlen(name) ; ++i)
    printf("%c", (i == 0 || name[i-1] == ' ') ? toupper(name[i]) : name[i]);
  }

祝你好运。