c语言关于 字符串倒序并输出

2025-06-22 22:05:16
推荐回答(3个)
回答1:

楼主第一种方法输出a1数组不是应该用printf("%c",a1[i]);么。%s的话直接

for (i = 0; i < len ; i++) {

    a1[i] = a[len - i - 1];

}

a1[i] = '\0';//这句不要忘了

printf("%s", a1);

楼主可以这样用一个数组自己实现倒序的

#include
#include

#define MAXLEN 50
void reverse(char *);

main()
{
    char line[MAXLEN];
    gets(line);
    reverse(line);
    printf("%s\n",line);
}

void reverse(char *s)
{
    int i, j;
    int c;
    
    for (i = 0,j = strlen(s) - 1; i < j; i++, j--) {
        c = s[i];
        s[i] = s[j];
        s[j] = c;
    }
}

回答2:

c语言里的字符数组都是以'\0'结尾的,在输出的时候遇到'\0'就会结束;第一种目标串结尾没赋值'\0'
即a1[len]=0 ;第二种是直接在原串上变换的,最后的'\0'没有被操作过,不会影响

回答3:

for (i = 0; i < len ; i++)
{

a1[i] = a[len - i - 1]; // 这样写整个转了一圈,而且数据被破坏了,你没有先保存原a[i]的值,丢了!

}

for (i = 0; i < len / 2; i++) 这是正确写法,前半部分与后半部分交换!!
{
temp = a[i]; //保存
a[i] = a[len - i - 1]; 后面的移前面
a[len - i - 1] = temp; //将前面的保存的数据,移到后面
}