c语言语法问题,大学还没开始讲呢,这是个译密码的程序吧,不知道哪错了

#include<stdio.h>
void NB(char a)
{
if((a>='a'&&a<='z')||(a>='a'&&a<='z'))
{a=a+4;
if(a>='z'&&a<='z'+4||a>'z')
{a=a-26;}
}
}
int main()
{int i;
char string[99];
printf("please enter what you want to say(<99):\n");
scanf("%s\n",&string);
for(i=0;i<=99;i++)
{NB(string[i]);
printf("%s",string);
}
}

第一种:char NB(char a)
{
//前面都照抄

return a;

}
for()里面
string[i] = NB(string[i]);

第二种:
void NB(char *pA)
{
char a = *pA;

//照抄

*pA = a;

}
for里面
NB(string + i);
你出错的原因是形参是实参的拷贝,改变形参的值未对实参造成任何影响。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-08
for (i=0; i<99; i++)
看编译器啊,你那什么编译,下边有错误提示。追问

没有错,没警告,就是我想要输入的字数少于99个

追答

你把 NBstring[i]去掉试试
string 是从string[0]开始的不是string[1],你用了100个数字去填充99个空

第2个回答  2014-10-08
for(i=0;i<=99;i++)改成for(i=0;i<99;i++)
相似回答