我的代码:
/*
函数fun的功能是:将s所指字符串中下标为奇数、同时ASCII值也为奇数的字符删除,
串中剩余的字符形成一个新串放在t所指的数组中
*/
#include<stdio.h>
#include<string.h>
void fun(char s[], char t[]) {
int len = strlen(s);
int i = 0, j = 0;
for (i = 0; i < len; i++) {
if (i % 2 == 0 || ((int)s[i]) % 2 == 0) {// 下标为偶数或者ASCII值为偶数
t[j++] = s[i];
}
}
t[j] = '\0';
for (i = 0; i < j; i++) {// Trace 20/1/19 15:55 为什么这个循环出来就全变成AAAAAAA了???
printf("t=%s\n", t);
s[i] = t[i];
}
s[i] = '\0';
}
int main() {
char s[] = "ABCDEFG12345";
char t[] = "";
fun(s, t);
printf("\n%s %s\n", s, t);
//printf("\n%s\n", t);
return 0;
}
没想到运行之后是这样的:
这什么鬼?怎么同一个字符串输出来慢慢就全变成AAAAAAAAAA了?后来调试了很久,我以为是fun()函数的第二个循环有问题,因为前面都是正常输出的。不过这个理由我觉得实在是说不过去,百思不得其解,遂咨询学姐。
学姐说这个是s本身出了问题,她说把s和t设置成全局变量就能正常输出,我试了下果然是耶!不过学姐也不知道为啥设置成全局变量就正常,而设置成局部变量就抽风……
跪求大佬能告诉我为啥