| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3314 人关注过本帖
标题:[求助]程序中主函数不调用子函数 .为什么?
只看楼主 加入收藏
cyhbp
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-8-27
收藏
 问题点数:0 回复次数:5 
[求助]程序中主函数不调用子函数 .为什么?

题目:函数readDat()实现从文件in76.dat中读取字符串到数组xx中。
要求编制函数jsSort()实现:以行为单位把字符串中的所有小写字母o左边的字符串内容移到该串的右边存放,然后 把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,然后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out76.dat中。
in76.dat文本内容:You can create an index on any field
you have the correct record.
out76.dat文本内容:n any fieldYu can create an index
rd.yu have the crrect rec


#include <stdio.h>
#include <string.h>
#include <conio.h>
char xx[1][80];
void jsSort()
{
int i,j,k=0,l,m,n;
char aa[1][80];
for (i=0;i<2;i++)
for (j=strlen(xx[i])-1;j>=0;j--)
if (xx[i][j]=='o'&&k==0) /*将倒数第一个o右边的字符串移到aa左边*/
{k=1;
l=0;m=j+1;n=j;
while(m!=strlen(xx[i]))
{aa[i][l]=xx[i][m];l++;m++;}
m=0;
}
else if(j==0) /*将倒数第一个o左边的字符移到字符串aa的右边*/
{
while(m!=n)
if (xx[i][m]=='o') m++;
else {aa[i][l]=xx[i][m];l++;m++;}
m=0;k=0; /* 到下一行,k必须为0 */
aa[i][l]='\0';
}

for (i=0;i<2;i++) /* 把处理的字符串aa给xx数组 */
for (j=0;j<strlen(xx[i]);j++)
xx[i][j]=aa[i][j];
/* writeDat(); 加入这一句程序运行正常,但主函数不调用绿色的witeDat()*/
}

void main()
{
readDat();
jsSort();
writeDat();
}

readDat()
{
FILE *in;
int i=0;
char *p;
in=fopen("in76.dat","r");
while (i<2&&fgets(xx[i],80,in)!=NULL)
{p=strchr(xx[i],'\n');
if (p) *p=0;
i++;}

fclose(in);
}
writeDat()
{
FILE *out;
int i;
out=fopen("out76.dat","w");
clrscr();
for (i=0;i<2;i++)
{ printf("%s\n",xx[i]); fprintf(out,"%s\n",xx[i]);}
fclose(out);
}

其实质是将倒数第一个o右边的字符串移到左边,左边的字符串移到右边。然后去掉所有o。我的jsSort函数就是这么写的,不过有个问题:主函数不调用writeDat函数,当jsSort为空函数时主函数调用writeDat函数。
只有jsSort函数有问题。
为什么主函数不调用writeDat函数?
jsSort函数结构写得有什么不对?

搜索更多相关主题的帖子: 函数 字符 create 文本 
2007-08-27 18:50
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
#include <stdio.h>
#include <string.h>
#include <conio.h>
char xx[1][80];
void jsSort()
{
int i,j,k=0,l,m,n;
char aa[1][80];
for (i=0;i<2;i++)
for (j=strlen(xx[i])-1;j>=0;j--)
if (xx[i][j]=='o'&&k==0) /*将倒数第一个o右边的字符串移到aa左边*/
{k=1;
l=0;m=j+1;n=j;
while(m!=strlen(xx[i]))
{aa[i][l]=xx[i][m];l++;m++;}
m=0;
}
else if(j==0) /*将倒数第一个o左边的字符移到字符串aa的右边*/
{
while(m!=n)
if (xx[i][m]=='o') m++;
else {aa[i][l]=xx[i][m];l++;m++;}
m=0;k=0; /* 到下一行,k必须为0 */
aa[i][l]='\0';
}

for (i=0;i<2;i++) /* 把处理的字符串aa给xx数组 */
for (j=0;j<strlen(xx[i]);j++)
xx[i][j]=aa[i][j];
/* writeDat(); 加入这一句程序运行正常,但主函数不调用绿色的witeDat()*/
}

readDat()
{
FILE *in;
int i=0;
char *p;
in=fopen("in76.dat","r");
while (i<2&&fgets(xx[i],80,in)!=NULL)
{p=strchr(xx[i],'\n');
if (p) *p=0;
i++;}

fclose(in);
}

writeDat()
{
FILE *out;
int i;
out=fopen("out76.dat","w");
clrscr();
for (i=0;i<2;i++)
{ printf("%s\n",xx[i]); fprintf(out,"%s\n",xx[i]);}
fclose(out);
}


void main()
{
readDat();
jsSort();
writeDat();

}


You have lots more to work on! Never give up!c language!
2007-08-27 18:53
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
缺少声明
要么把函数定义放在使用的前面,要么加函数声明



by 雨中飞燕 QQ:78803110

请大家不要用TC来学习C语言
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]

[此贴子已经被作者于2007-8-27 18:55:12编辑过]

2007-08-27 18:53
cyhbp
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-8-27
收藏
得分:0 
不是这样的
我已经说过了,只有jsSort函数有错,若jsSort是空函数,main函数会调用writeDat函数的。这时你会发现目录下会多一个out76.dat的文件.请你们试过后再回答。

2007-08-27 19:07
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
雨燕,你说吧

You have lots more to work on! Never give up!c language!
2007-08-27 19:13
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
楼主你换一个编译器试试看什么结果吧,别用TC了



by 雨中飞燕 QQ:78803110

请大家不要用TC来学习C语言
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]

[此贴子已经被作者于2007-8-27 19:52:54编辑过]

2007-08-27 19:42
快速回复:[求助]程序中主函数不调用子函数 .为什么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042358 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved