|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <string.h>
#define SIZE 81
void opposite(char a1[]);
int main(void)
{
char str[SIZE];
printf("Please enter a string:\n");
while (gets(str))
{
opposite(str);
puts(str);
puts("Please enter the string again.");
}
getchar();
return 0;
}
void opposite(char a1[])
{
char a2[SIZE];
int i, j;
for ( i = (strlen(a1)-1),j=0; i >= 0; i--,j++)
a2[j] = a1[i];
a2[j + 1] = '\0';
puts(a2);
strcpy(a1, a2);
}
为什么我a2打印出来最后会多一个问号?
本帖最后由 风扫地 于 2019-6-26 14:48 编辑
opposite:
加一句:memset(a2,0,sizeof(char)*SIZE);
或者改一句:
而且 i = -1的时候a[j]已经指向本应写0的后面一个字节了,
i指出有效范围时,j也必然同时指出了有效字符串范围
应该是a2[j]= 0;而不是a2[j+1]=0;
|
|