为了解决我在创建可以加密和解密字符串(输入)的程序时遇到的问题,我决定创建另一个名为“char passb [81]”的数组
这个新数组的目的是存储输入的相应大写字符。这些字符将用于我程序的其他部分。我已经包含了以下代码。
int plength;
char pass[81];
printf("Please enter passphrase: \n");
scanf("%s", &pass);
plength=("%d", strlen(pass));
{
char passb[81];
int p;
for (p=0; p<plength; p++)
{
if(pass[p] >= 97 && pass[p] <= 122)
{
return((pass[p]-32), &passb);
}
else if (pass[p] >= 65 && pass[p] <= 90)
{
return((pass[p]), &passb);
}
}
printf("\n");
}
当我尝试编译程序时,收到以下错误消息:
test2.c: In function ‘main’:
test2.c:50:6: warning: return makes integer from pointer without a cast
return((pass[p]-32), &passb);
^
test2.c:50:6: warning: function returns address of local variable [-Wreturn- local-addr]
test2.c:54:6: warning: return makes integer from pointer without a cast
return((pass[p]), &passb);
^
test2.c:54:6: warning: function returns address of local variable [-Wreturn-local-addr]
我该怎么做才能解决这个问题?任何贡献和回应将不胜感激。
答案 0 :(得分:1)
你不需要那里的退货声明,只需要一份作业:
if(pass[p] >= 97 && pass[p] <= 122)
{
passb[p] = pass[p]-32;
}
else //don't need this either if (pass[p] >= 65 && pass[p] <= 90)
{
passb[p] = pass[p];
}
所有这些都可以替换为:
passb[p] = toupper(pass[p]);