大写字母输入无法在cpp程序中工作

时间:2015-09-30 14:34:51

标签: c++

我现在正在阅读C ++,并被困在以下程序中。

当我提供带小写字母的字符串时,它提供了一个很好的输出,但是当我使用大写字母时,它会在输入后卡住。

以下是代码:

`#include <iostream>`
 #include <stdio.h>
 #include "string.h"

using namespace std;

class base {
public:
int array(){
    int i, n, p, z = 0;
    char g[50];
    string c[50];
    char abc;

    cout << "Enter the name :" << endl;
    cin >> g;

    i = 0;
    while (g[i] != 0)
        if ((g[i] >= 'a' && g[i] <= 'z') || (g[i] <= 'A' && g[i] >= 'Z')){
            z++;
            i++;
        }
    cout << "name is of " << z << " elements" << endl;
    {
        for (p = 0; p < z; p++)
            cout << "a[" << p + 1 << "]=" << g[p] << endl;
    }
    cout << "enter the element no.:";
    cin >> n;
    if(n >0 && n <= z){
        cout << "a[" << n << "]=" << g[n-1] << endl;
    }
    for (p = 0; p < z; p++){
        char integer_string[50];
        int integer = p+1;

        sprintf(integer_string, "%d", integer);
        char other_string[50] = "g[";
        strcat(other_string, integer_string);
        strcat(other_string, "]");
        c[p]= other_string;
    }
    cout << "Enter the character :";
    cin >> abc;

    for (p = 0; p < z; p++){
        if(g[p] == abc){
            cout <<abc<< "=a[" << p + 1 << "]"<< endl;
            break;
        }
    }
    return 0;
}
};

//--------------------------------------------------------------
int main(){

    base b;
    b.array();

    return 0;
}

你能告诉我我的课程有什么问题吗?

1 个答案:

答案 0 :(得分:1)

尝试更改

if ((g[i] >= 'a' && g[i] <= 'z') || (g[i] <= 'A' && g[i] >= 'Z'))

if ((g[i] >= 'a' && g[i] <= 'z') || (g[i] >= 'A' && g[i] <= 'Z'))

并删除三个`,第一行有两个,最后一行有一个。

<强>更新

#incude <cctype>添加到代码的头部并使用

if (islower(g[i]) || isupper(g[i]))

更好。避免依赖字符代码。

if (isalpha(g[i]))也可以。