c语言关于 字符串倒序并输出7
发布网友
发布时间:2023-10-30 05:04
我来回答
共3个回答
热心网友
时间:2024-02-29 06:46
楼主第一种方法输出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<stdio.h>
#include<string.h>
#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;
}
}
热心网友
时间:2024-02-29 06:46
c语言里的字符数组都是以'\0'结尾的,在输出的时候遇到'\0'就会结束;第一种目标串结尾没赋值'\0'
即a1[len]=0 ;第二种是直接在原串上变换的,最后的'\0'没有被操作过,不会影响
热心网友
时间:2024-02-29 06:47
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; //将前面的保存的数据,移到后面
}