C我在这段代码中做错了什么?

时间:2017-10-14 23:25:19

标签: c

您好我是C编程的新手,我做了一个简单的代码,它接收一个字符串,只大写每个单词的第一个字母,任何其他字母都应该是小写,这就是代码:

#include <stdio.h>
int main()
{
    char k[30];
    printf("Please enter a sentece in capital letters: ");
    scanf("%s", k);
    for (int i = 0; i < 30; i++)
    {
        while (k[i] == ' ')
            i++;
        if (k[i] >= 'A' && k[i] <= 'Z')
            i++;
        while (k[i] >= 'A' && k[i] <= 'Z' && k[i] != ' ')
        {
            k[i] = k[i] + 32;
            i++;
        } // While loop
    } // For loop
    printf("%s", k);
} // main

代码只打印第一个单词(并且在没有打印整个字符串的情况下停止)而不将任何字母转换为小写字母或大写第一个字母,我做错了什么?

编辑:我似乎忽略了for循环,混合'&lt;'用'&gt;'现在已经修复了我运行代码并且它打印了第一个单词OK,并且在第一个单词之后停止了,但在第一个单词之后没有打印任何内容。

3 个答案:

答案 0 :(得分:4)

嗯,那个代码不是C#,只是c,我认为这就是你的代码没有运行的原因。

答案 1 :(得分:0)

我认为你的问题是在第6行,你写了<test-elm id="myelm" onclick="console.log('clicked button')"></test-elm> 。请注意它是如何显示for (int i=0;i>30;i++)而不是i>30,因此此循环不会执行。相反,请写i<30

答案 2 :(得分:0)

使用fgets代替scanf修复了问题,这要归功于@yano:)