返回信息流程序和运行结果如下:
期待运行结果是:gfedcba
为什么我运行出来只有g了呢?
谢谢大家!
这是一条镜像帖。来源:北邮人论坛 / cpp / #85681同步于 2015/2/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
请问大家为什么我写的字符串逆置程序运行出来不对?
singingwheat
2015/2/28镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
代码有几处错误:
#include<iostream>
#include<string.h>
using namespace std;
void fun(char *s)
{
int n=strlen(s);
int i=0;
char t;
for(;i<n-1-i;i++)
{
t=s[i];
s[i]=s[n-1-i];
s[n-1-i]=t;
}
}
int main(int argc, char* argv[])
{
char a[256];
printf("input string:");
gets(a);
printf("output string:");
fun(a);
puts(a);
return 0;
}
贴一下可用的代码。
#include<stdio.h>
#include <string.h>
void fun(char *s)
{
unsigned long n = strlen(s);
int i = 0;
int t = 0;
for ( ; s+i<s+n-1-i; i++) {
t = *(s+i);
*(s+i) = *(s+n-1+i);
*(s+n-1+i) = t;
}
}
int main()
{
char a[81];
printf("请输入字符串:");
gets(a);
fun(a);
printf("输出的字符串是");
puts(a);
return 0;
}
重贴代码了哈
【 在 FromSixToTen 的大作中提到: 】
: 能不能不贴图,而是贴代码呀,这样还能运行一下看看。
请问为什么我那个fun函数,想使用指针来逆置字符串,写出来的程序不对呢?谢谢!
【 在 FromSixToTen 的大作中提到: 】
: 代码有几处错误:
: #include<iostream>
: #include<string.h>
: ...................
请问为什么呢?
*(s+i)表示的是地址为s+i的内存存储的数据吧?
【 在 moonfighting 的大作中提到: 】
: *(s+i) = *(s+n-1+i);
: *(s+n-1+i) = t;
: 这两句有问题