[英]Count the number of letters, digits and special characters in C program
所以这是我的代码,我正在为ispunct()
苦苦挣扎; 它从 8 开始计数,在isalpha()
中它开始从 1 开始计数,所以我将它打印为 noAlpha-1,但是在ispunct()
noSpecial-8
变得准确是很尴尬的。 我没有任何数字问题。 这可能是什么问题?
#include<stdio.h>
#include<ctype.h>
int main(){
char string[100];
int i, noAlpha, noDigit, noSpecial;
printf("Input the string : ");
gets(string);
noAlpha=0;
noDigit=0;
noSpecial=0;
for(i=0;i<100;i++) {
if(isalpha(string[i]))
noAlpha++;
if(isdigit(string[i]))
noDigit++;
if(ispunct(string[i]))
noSpecial++;
}
printf("Number of Alphabets in the string is %d\n", noAlpha-1);
printf("Number of Digits in the string is %d\n", noDigit);
printf("Number of Special characters in the string is %d\n", noSpecial);
}
function 获取不安全,不受 C 标准支持。
要么使用 fgets 之类的
fgets( string, sizeof( string ), stdin );
或扫描喜欢
scanf( "%99[^\n]", string );
输入的字符串可以小于数组字符串的大小。 所以这个循环
for(i=0;i<100;i++)
调用未定义的行为。
相反,你应该使用
for(i=0; string[i] != '\0'; i++)
最好像 if-else 语句一样重写 if 语句
unsigned char c = string[i];
if( isalpha( c ) )
{
noAlpha++;
}
else if( isdigit( c ) )
{
noDigit++;
}
else if( ispunct( c ) )
{
noSpecial++;
}
所以 output 看起来像
printf("Number of Alphabets in the string is %d\n", noAlpha);
printf("Number of Digits in the string is %d\n", noDigit);
printf("Number of Special characters in the string is %d\n", noSpecial);
#include<stdio.h>
#include<ctype.h>
int main(){
char string[100];
int i, noAlpha, noDigit, noSpecial;
printf("Input the string : ");
scanf( "%99[^\n]", string );
noAlpha=0;
noDigit=0;
noSpecial=0;
for(i=0; string[i] != '\0'; i++) {
unsigned char c = string[i];
if( isalpha( c ) )
{
noAlpha++;
}
else if( isdigit( c ) )
{
noDigit++;
}
else if( ispunct( c ) )
{
noSpecial++;
}
}
printf("Number of Alphabets in the string is %d\n", noAlpha-1);
printf("Number of Digits in the string is %d\n", noDigit);
printf("Number of Special characters in the string is %d\n",noSpecial);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.