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

I can't get an algorithm based on reading a character array to work

本文关键字:数组 字符 算法 工作 读取 于读取      更新时间:2023-10-16

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

#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",它将该差异添加到大写字母表的第一个字母上,可以这么说,从而获得字母的大写版本)。

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

while (p)

应该是

while (*p)

如果要在 null 终止符上停止,则需要取消引用指针,否则将测试指针是否不为 null。

旁注:您可能会发现std::tolower功能很有帮助。