【发布时间】:2019-06-12 10:58:32
【问题描述】:
我想用函数密码计算字母、数字、符号似乎它没有正确计算数字,因为最后每个 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,所以这对我来说很难!
【问题讨论】:
-
参数按值传递。这意味着如果您在函数中更改它们,它们只会在本地更改。您需要将指针传递给它们,然后通过它更改值。
-
你能在我的代码中给我一个例子吗
-
我尝试将 str[] 更改为 *str[] 然后在 gets(&str) 中编辑它,但仍然得到零
-
这不是你要返回一个值的变量
标签: c