gpt4 book ai didi

c - 如何使用检查数字的函数解决字符串中字母、符号、数字的计数问题

转载 作者:行者123 更新时间:2023-11-30 14:38:30 25 4
gpt4 key购买 nike

我想使用函数密码来计算字母、数字、符号似乎它没有正确地计算出数字,因为我最后每个 printf 都得到 0

#include <stdio.h>
void password(char * str[],int together,int numbers,int symbols,int i,int uppercase,int lowercase);
int main()
{
char str[100];
int together, numbers, symbols, i,uppercase,lowercase;

together = numbers = symbols = i = uppercase = lowercase = 0;

printf("password : ");
gets(&str);
printf(" %s", str);
password(&str,together,numbers,symbols,i,uppercase,lowercase);
printf("Number of letters = %d\n", together);
printf("number uppercase = %d\n", uppercase);
printf("Number lowecase = %d\n", lowercase);
printf("numbers = %d\n", numbers);
printf("Simboli = %d", symbols);
if (together >= 8 && numbers >= 2){
printf("\nPassword is correct");
}else{
printf("\nPassword isn't correct");
}
return 0;
}
void password(char * str[],int together,int numbers,int symbols,int i,int uppercase,int lowercase){
while(*str[i]!='\0')
{
if((*str[i]>='a' && *str[i]<='z') || (*str[i]>='A' && *str[i]<='Z'))
{
together++;
}
else if(*str[i]>='0' && *str[i]<='9')
{
numbers++;
}
else if(*str[i] >= 'A' && *str[i] <= 'Z') {
uppercase++;
}
else if(*str[i] >= 'a' && *str[i] <= 'z'){
lowercase++;
}
else
{
symbols++;
}

i++;
}
}

每个数字、字母和符号程序运行时都为零,没有任何错误我尝试更改一些内容,但我目前正在学习 C,所以这对我来说很难!

最佳答案

几点:1)不需要传递 i 作为参数,因为您可以使用 string.h 中的 strlen 获取字符串的长度(它返回一个size_t 类型而不是 int)。 2)您将参数作为值传递,这意味着它们只会在您的函数本地更改。 3)不要使用不安全的gets函数,您可能需要使用fgetsscanf

#include <string.h>
#include <stdio.h>

void password(char *str, int *together, int *numbers, int *symbols, int *uppercase, int *lowercase){
for(size_t i=0; i<strlen(str); i++){
if(str[i] >= '0' && str[i] <= '9') (*numbers)++;
if(str[i] >= 'A' && str[i] <= 'Z') (*uppercase)++;
if(str[i] >= 'a' && str[i] <= 'z') (*lowercase)++;
if(str[i] >= '!' && str[i] <= '/') (*symbols)++;
}
*together = (*uppercase) + (*lowercase);
}

int main(void){

char str[100] = "Pa$$w0/2d";
int together = 0;
int numbers = 0;
int symbols = 0;
int uppercase = 0;
int lowercase = 0;

password(str, &together, &numbers, &symbols, &uppercase, &lowercase);
printf("Letters = %d\n", together);
printf("Uppercase = %d\n", uppercase);
printf("Lowercase = %d\n", lowercase);
printf("Numbers = %d\n", numbers);
printf("Symbols = %d\n", symbols)

return 0;
}

关于c - 如何使用检查数字的函数解决字符串中字母、符号、数字的计数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56560548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com