错误〜检查字符是否为小写字母

时间:2017-02-05 12:34:53

标签: c++ lowercase

这是我编写的代码,用于检查[i]是否为小写字母。

    #include<iostream>
    #include<conio.h>
    #include<stdio.h>
    using namespace std;
    int main()
    {
       int i=0;
       char str[i]="Enter an alphabet:";
       char i;
       while(str[i])
            {
              i=str[i];
              if (islower(i))  i=toupper(i);
              putchar(i);
              i++;
            }
       return 0;
     }

我得到的错误是

    ||=== Build: Debug in practice (compiler: GNU GCC Compiler) ===|
    C:\Users\Public\Documents\krish\practice\main.cpp||In function 'int main()':|
    C:\Users\Public\Documents\krish\practice\main.cpp|9|error: conflicting declaration 'char i'|
    C:\Users\Public\Documents\krish\practice\main.cpp|7|note: previous declaration as 'int i'|
    ||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

3 个答案:

答案 0 :(得分:2)

问题正是错误消息所说的:您声明i两次。一次为char,一次为int

int i=0; // declare i as int and assign 0
char str[i]="Enter an alphabet:";
char i; // declare i as char -> i is already declared as int.

重命名您的一个变量。

也不要使用conio.h - 它不是标准C库的一部分,也不是由POSIX定义的。

答案 1 :(得分:1)

数组在编译时必须具有常量大小且非零大小:

int i = 0;
char str[i] = "Enter an alphabet:"; //

您的代码中的上方i必须保持不变,且不得为0

所以你可以这样声明:

const int SIZE = 50;
char str[SIZE] = "Enter an alphabet:";

此处:

char i;
while(str[i])

上面你使用了i而没有初始化你使用char作为数组的索引!

您的代码如下:

    const int SIZE = 50; // constant size
    char str[SIZE] = "Enter an alphabet:";

    //if you want : char str[] = "Enter an alphabet:";

    int i = 0; // initialize
    while( i < strlen(str))
    {
        char c = str[i];
        if(islower(c))
            c = toupper(c);
        putchar(c);
        i++;
    }

答案 2 :(得分:0)

新代码~~~

    /* islower example */
      #include <stdio.h>
      #include <ctype.h>
      int main ()
      {
       int i=0;
       char str[]="Test String.\n";
       char c;
       while (str[i])
        {
         c=str[i];
         if (islower(c)) c=toupper(c);
         putchar (c);
         i++;
        }
       return 0;
       }

现在正在工作~~