100题第11题另解
11:下列程序的功能是:把s字符串中的所有字母改写成该字母的下一个字符,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char *s)实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。例如:s字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为No.123Ayz。
注意:部分源程序已给出。
请勿改动主函数main()和输出数据函数readwriteDat()的内容。
-----------------------
void chg(char *s) /*为什么要设为指针变量呢?*/
{
int i,k;
k=strlen(s);
for(i=0;i<k;i++)
{
if(s[i]=='z'||s[i]=='Z') /*s不是数组啊?怎么成数组了呢?*/
s[i]-=25; /*减25后变成a或A*/
else
if(isalpha(s[i])) /*如果不只z或Z,那么利用函数isalpha判断是否仍是字符,如果是,那么其值加一*/
s[i]++;
}
}
----------------解决方案--------------------------------------------------------
不把字符串首地址当参数传进来,怎么进行操作? 除非设置为全局变量
----------------解决方案--------------------------------------------------------