c语言逆转字符串函数,字符串反转函数c语言

C语言逆转字符串

这个不是双重循环,没看见第一个for循环后有个分号吗?第一个for循环的作用是找到你所输入字符串s1的最后一个字符(执行完毕后i就等于s1的长度了);第二个for循环的作用是把s1从第一个字符到最后一个字符依次插入s2的最后一个字符到第一个字符.

创新互联凭借在网站建设、网站推广领域领先的技术能力和多年的行业经验,为客户提供超值的营销型网站建设服务,我们始终认为:好的营销型网站就是好的业务员。我们已成功为企业单位、个人等客户提供了成都网站制作、成都网站建设服务,以良好的商业信誉,完善的服务及深厚的技术力量处于同行领先地位。

由于没有给s2的最后加上‘\0’表示字符串结束的字符,所以最后加了个s2[i]='\n'; 语句。如果没有此句输出的结果就可能是是s1的逆序加其他的未知字符串。

C语言字符串逆转函数

只需要将字符数组的前后数据进行交换就行了。

#include stdio.h

#include string.h

char* reverse(char *x)

{

int i, tem, len = strlen(x);

int n = len / 2;

for (i = 0; i = n; i++)  // 前后交换数据

{

tem = x[i];

x[i] = x[len - 1 - i];

x[len - 1 - i] = tem;

}

return x;

}

int main()

{

char p[] = "abcdefghijk";

printf("relust = %s\n", reverse(p));

return 0;

}

C语言,如何写一个函数,不定义新变量将字符串逆转,想了很久没想出来

这是一个很有趣的问题。就这样函数来本身来说,它可能不具备实用性,但的确具有一定的挑战性。

这个问题的描述来看,应该是要实现下面一个函数:

void reverse(char* str);

要求:

1、函数的实现不能定义变量

2、不能使用其它函数(如strlen等,不然直接使用现成函数,这个问题就没意义了)

3、当然也不能定义更多的函数进行辅助

关于第三点,应该是一个隐含的条件,原因是,假如允许定义更多的函数,函数的形参和返回值本身就是一个变量,例如定义一个char* more(char* var1, char var2, int var3),如此,var1、var2、var3以及返回值本身,都是额外的变量,如此问题本身就没有意义了。

另外必须要提到的一点是,不定义新变量,不代表更高的效率或者不消耗更多的空间。

基于以上分析,看了几年前前人的答案,总感觉不太满意,自己做了一个方案,以供玩意(当然不能保证没有人使用过,如有雷同纯属人类思维的一致性)。

代码如下:

void reverse(char* a)

{

if (a[0]  a[1])

{

reverse(a + 1);

while (a[1])

{

a[0] ^= a[1];

a[1] ^= a[0];

a[0] ^= a[1];

++a;

}

}

}

示例程序:

#includeiostream.h

void reverse(char* a)

{

if (a[0]  a[1])

{

reverse(a + 1);

while (a[1])

{

a[0] ^= a[1];

a[1] ^= a[0];

a[0] ^= a[1];

++a;

}

}

}

int main()

{

char a[] = "0123456";

reverse(a);

coutaendl; // 输出结果:6543210

return 0;

}

C语言 字符串反转函数(不使用库函数)

char *revstr(char *str, size_t len)

{

char *start = str;

char *end = str + len - 1;

char ch;

if (str != NULL)

{

while (start end)

{

ch = *start;

*start++ = *end;

*end-- = ch;

}

}

return str;

}


本文名称:c语言逆转字符串函数,字符串反转函数c语言
网站路径:http://scyanting.com/article/hciddc.html