strcpy问题
#include <stdio.h>#include <string.h>
#define SIZE 81
void opposite(char a1[]);
int main(void)
{
char str;
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;
int i, j;
for ( i = (strlen(a1)-1),j=0; i >= 0; i--,j++)
a2 = a1;
a2 = '\0';
puts(a2);
strcpy(a1, a2);
}
为什么我a2打印出来最后会多一个问号?
本帖最后由 风扫地 于 2019-6-26 14:48 编辑
opposite:
加一句:memset(a2,0,sizeof(char)*SIZE);
或者改一句:
而且i = -1的时候a已经指向本应写0的后面一个字节了,
i指出有效范围时,j也必然同时指出了有效字符串范围
应该是a2= 0;而不是a2=0; 不就是把字符串倒一下序吗,楼主把问题复杂化了。
void opposite(char a[])
{
char c ;
int i , m ;
for(i = 0 , m = strlen(a) ; i < m / 2 ; i ++) {
c = a ;
a = a ;
a = c ;
}
fputs(a , stdout) ;
}
页:
[1]