这是我编写的代码,用于检查[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)) ===|
答案 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;
}
现在正在工作~~