再问一个二级题,不明白为什么我这做不能求出正确结果

bss001 2011-03-22 10:35:04

#include <string.h>
#include <stdio.h>
#define N 81
fun (char *s)
{int i,num=strlen(s);
char t;
for(i=0;i<num;i++)
{
t=s[i];
s[i]=s[num-i-1];
s[num-i-1]=t;
}

}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
int i ;
char a[N] ;
FILE *rf, *wf ;
rf = fopen("in.dat","r");
wf = fopen("out.dat","w");
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%s", a);
fun(a);
fprintf(wf, "%s\n", a);
}
fclose(rf);
fclose(wf);
}
main()
{char a[N];
printf ("Enter a string : "); gets (a);
printf ("The original string is : "); puts(a);
fun (a);
printf("\n");
printf ("The string after modified : ");
puts (a);
NONO();
}


fun()里面的内容是我自己写的,但是不能实现功能……
...全文
129 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
dimple0513 2011-03-23
  • 打赏
  • 举报
回复
void fun (char* s)
{
int nNum = strlen(s);
for (int i=0;i<nNum/2;i++)
{
char c = s[i];
s[i] = s[nNum-i-1];
s[nNum-i-1] = c;
}
s[nNum] = '\0';
}
hhh_hao 2011-03-22
  • 打赏
  • 举报
回复
晕死,看三楼,一个小时前就回答你了
bss001 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 hhh_hao 的回复:]

引用 12 楼 bss001 的回复:

引用 11 楼 hhh_hao 的回复:

这个答案没你的思路好,
就是重新申请一个空间,从尾到头复制,然后再字符串拷贝


那我那个怎么改啊,我用楼上的二级指针貌似也不对,刚照着他的改了编译了一遍……


不需要二级指针, for(i=0;i<num/2;i++)就可以了
[/Quote]

我就说么……好了结贴给分……
bss001 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 dimple0513 的回复:]

5楼正解,关键是你的fun函数应该用指针的指针
[/Quote]
五楼的可能是强人,但是人家说了不能改除了fun函数的其他部分,就是其余部分没有错,也不用设计那部分的内容,只需要我设计一个fun实现功能而已
hhh_hao 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 bss001 的回复:]

引用 11 楼 hhh_hao 的回复:

这个答案没你的思路好,
就是重新申请一个空间,从尾到头复制,然后再字符串拷贝


那我那个怎么改啊,我用楼上的二级指针貌似也不对,刚照着他的改了编译了一遍……
[/Quote]

不需要二级指针, for(i=0;i<num/2;i++)就可以了
dimple0513 2011-03-22
  • 打赏
  • 举报
回复
5楼正解,关键是你的fun函数应该用指针的指针
bss001 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hhh_hao 的回复:]

这个答案没你的思路好,
就是重新申请一个空间,从尾到头复制,然后再字符串拷贝
[/Quote]

那我那个怎么改啊,我用楼上的二级指针貌似也不对,刚照着他的改了编译了一遍……
hhh_hao 2011-03-22
  • 打赏
  • 举报
回复
这个答案没你的思路好,
就是重新申请一个空间,从尾到头复制,然后再字符串拷贝
xgrsb2005 2011-03-22
  • 打赏
  • 举报
回复
这货不是2级。。。
bss001 2011-03-22
  • 打赏
  • 举报
回复
这是答案写的,但是我不知道这是什么意思,总想在我思路上找想法……
我也不知道这里面的memset怎么用……


fun (char *s)
{
char b[N];
int i=0, j;
memset(b, 0, N);
for(j=strlen(s)-1; j>=0; j--)b[i++]=s[j];
strcpy(s, b);
}
AAAmaomaochong 2011-03-22
  • 打赏
  • 举报
回复
程序中别的没有问题,就是进行字符串逆置输出是,循环次数加的的太多了,若字符串有四个字符,只需要循环二次就够了,三个字符,只需要循环一次就行了。自己调试一下就知道了。
bss001 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hnuqinhuan 的回复:]

C/C++ code

#include <string.h>
#include <stdio.h>
#define N 81
void fun (char **s)
{
int i,num=strlen(*s);
char t;
for(i=0;i<num/2;i++)//---------你的等于没有变化
{
t=(*s)[i];
……
[/Quote]

题目只要求设计fun()中的内容……
其它函数不用改……
無_1024 2011-03-22
  • 打赏
  • 举报
回复

#include <string.h>
#include <stdio.h>
#define N 81
void fun (char **s)
{
int i,num=strlen(*s);
char t;
for(i=0;i<num/2;i++)//---------你的等于没有变化
{
t=(*s)[i];
(*s)[i]=(*s)[num-i-1];
(*s)[num-i-1]=t;
}
(*s)[num] = '\0';
}
void NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
int i ;
char *a = new char [N];
FILE *rf, *wf ;
rf = fopen("in.dat","w+");//--文件打开格式错了
wf = fopen("out.dat","r+");
for(i = 0 ; i < 1 ; i++) {
fscanf(rf, "%s", a);
fun(&a);
fprintf(wf, "%s\n", a);
}
fclose(rf);
fclose(wf);
}
main()
{
char *a = new char[N];
printf ("Enter a string : ");
gets (a);
printf ("The original string is : ");
puts(a);
fun (&a);
printf("\n");
printf ("The string after modified : ");
puts (a);
NONO();
}


無_1024 2011-03-22
  • 打赏
  • 举报
回复

#include <string.h>
#include <stdio.h>
#define N 81
void fun (char **s)
{
int i,num=strlen(*s);
char t;
for(i=0;i<num/2;i++)
{
t=(*s)[i];
(*s)[i]=(*s)[num-i-1];
(*s)[num-i-1]=t;
}
(*s)[num] = '\0';
}
void NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
int i ;
char *a = new char [N];
FILE *rf, *wf ;
rf = fopen("in.dat","w+");
wf = fopen("out.dat","r+");
for(i = 0 ; i < 1 ; i++) {
fscanf(rf, "%s", a);
fun(&a);
fprintf(wf, "%s\n", a);
}
fclose(rf);
fclose(wf);
}
main()
{
char *a = new char[N];
printf ("Enter a string : ");
gets (a);
printf ("The original string is : ");
puts(a);
fun (&a);
printf("\n");
printf ("The string after modified : ");
puts (a);
NONO();
}


jvs 2011-03-22
  • 打赏
  • 举报
回复
你in.dat文件跟你的c文件放在一个目录下了吗?
hhh_hao 2011-03-22
  • 打赏
  • 举报
回复
for(i=0;i<num/2;i++)
bss001 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hhh_hao 的回复:]
这个题是要做什么?看不懂
[/Quote]

实现字符串逆置输出
hhh_hao 2011-03-22
  • 打赏
  • 举报
回复
这个题是要做什么?看不懂

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧