我无法获得基于读取字符数组的算法来工作

时间:2019-01-12 19:53:32

标签: c++ arrays char

我需要将输入的字符数组转换为所有小写字母。读数在“。”处停止。字符。我必须这样做,而不必使用字符串变量或库中的任何函数。

#include <iostream>
using namespace std;

int main(){
    char s[200], *p=s;
    cin.getline(s, 200, '.');
    while(p){
        if('a' <= *p && *p <= 'z') *p += 'A'-'a';
        p++;
    }
    cout << s;
}

该算法应该检查数组中的每个字符,直到遇到空指针为止。然后,对于每个字符,它应该检查它是否为小写字符。如果是,则将其更改为大写字母(通过减小“ a”,它表示字母的第一个字母与它所指代的字母之间的差异;通过增大“ A”,则将其差异添加到大写字母中)可以说是大写字母,从而获得字母的大写版本。

我不知道我的错误在哪里,但是当我尝试运行它时,我的编译器崩溃了。

1 个答案:

答案 0 :(得分:1)

LookupCombo.Completed += async (object sender, CompletedEventArgs e) =>
{
    C1AutoComplete AC = (C1AutoComplete)sender;
    if (AC.Text.Trim() != "")
    {
        string sColName = AC.AccessibilityIdentifier.Trim();
        var ValuesVC = (List<Lookupcombo_Entry>)AC.ItemsSource;
        var IsThisAHit = from Lookupcombo_Entry in ValuesVC
                         where Lookupcombo_Entry.sDispVal.ToUpper().Trim() == e.value.ToUpper().Trim()
                         select Lookupcombo_Entry.sMapVal;
        if (!IsThisAHit.Any())
        {
            string sTitle = "";
            string sFull = _RM.GetString(sColName);
            if (sFull == null) { sFull = "???-" + sColName.Trim(); }
            sTitle = " Add New " + sFull.Trim() + "?";
            string sPPrompt = "Do you want to add a new " + sFull.Trim() + " named " + AC.Text.Trim() + " to the Database?";
            var popupResult = await AlertPopups.AskUser(CurrentViewController(), V, sTitle, sPPrompt, MessagePopupType.YesNo);
          }
    }
};

应该是

    private UIViewController CurrentViewController()
    {
        var window = UIApplication.SharedApplication.KeyWindow;
        var vc = window.RootViewController;
        while (vc.PresentedViewController != null)
        {
            vc = vc.PresentedViewController;
        }
        return vc;
    }

如果您希望停止使用null终止符,则需要取消引用该指针,否则将测试该指针不是null。

旁注:您可能会发现while (p) 函数很有帮助。