#include "stdio.h"
void main()
{
int j,n;
char ch[80],tran[80];
printf("input cipher code:");
gets(ch);
printf("\ncipher code:%s",ch);
j=0;
while (ch[j]!='0')
{if((ch[j]>='A') && (ch[j]<='Z'))
tran[j]=155-ch[j];
else if ((ch[j]>='a') && (ch[j]<='z'))
tran[j]=219-ch[j];
else
tran[j]=ch[j];
j++;
}
n=j;
printf("\noringinal text:");
for(j=0;j<n;j++)
putchar(tran[j]);
printf("\n");
}
以及,为什么输出结果除了我要的,还有乱码?
第10行写错了,应该是while (ch[j]!='\0') 啊,嘻嘻
\0 啊,我知道啊,然后呢,怎么修改可以去掉那些乱码?(乱码的情况见问题补充吧)
追答你的循环的判断条件是错的。:ch[j]!='0'代表当字符为'0'的时候停下来,和'\0'是两码事,那么你的循环就不会再字符串的结尾停下来,也就是说n的值远远超过了你所输入的字符串的长度,输出的时候当然会把内存里其他的东西也输出来,那就是乱码。
追问嗯,我也注意到了,新手新手,嘻嘻
第10行写错了,应该是while (ch[j]!='\0') 嘛~
整形数组只是整形的集合,所以其数组名仅仅是其首地址,我们必须要用for循环才能完整的输出整个整形数组
出现乱码是因为,字符串都有一个 结束符‘/0’,因为输出时找不到结束符,所以以乱码输出。追问
嗯嗯,第10行写错了,应该是while (ch[j]!='\0') 啊,嘻嘻
追答那解决了问题么?
懂了就好
第10行写错了,应该是while (ch[j]!='\0') 啊,嘻嘻