| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 425 人关注过本帖
标题:奇葩C语言问题。。。不能正常比较。。一直大于。。循环即便又出现等于。。接 ...
只看楼主 加入收藏
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
结帖率:77.78%
收藏
已结贴  问题点数:3 回复次数:3 
奇葩C语言问题。。。不能正常比较。。一直大于。。循环即便又出现等于。。接着就溢出了
#include<stdio.h>
#include<process.h>
#include<string.h>

#define  true 0;
#define   false -1;
#define  filehmax 101//支持最大的文件行数.需要比文件行数大1
#define  strmaxl  15//字符串最大长度



//全局变量区
char CO[filehmax][strmaxl];
char *TP;//TP是temp的意思
int ag;


//字符串互换函数。采用指针自增 来源百度。
void swapstr(char *str1,char *str2)
{
 char str[strmaxl];
 char *p=str,*p1=str1,*p2=str2;
 while((*p++=*p1++)!=NULL);
 p=str,p1=str1;
 while((*p1++=*p2++)!=NULL);
 p2=str2;
 while((*p2++=*p++)!=NULL);
}

int main (void)
{
//功能变量区
    FILE *file;  //文件指针
    int fileh;   //文件行数

//临时变量区
char a;
int i,j;
int li,lj,lk;
//打开文件
restart:
    system("cls");
    printf("       本程序将从1.txt文件中读取数据,并进行处理。\n    文件最多:%d行\n单行字符个数最大为:%d\n  注意:程序有BUG。。最后一行不要为单独的回车。不然最后一个读出的数据会为乱码 ",filehmax,strmaxl);
    getchar();

    file=fopen("1.txt","r");
    if(file==NULL)
    {
        printf("文件1.txt打开失败!请确定文件是否存在。");
        getchar();
        goto restart;
    } else{
        printf("文件1.txt成功打开。\n");
        getchar();
    }





//得出文件行数,判断是否能处理
    fileh=0;
    while((a=fgetc(file))!=EOF)
    {
        if(a=='\n')
        {
            fileh++;
        }
        
    }
    fileh++;

//判断是否能进行操作
    if(fileh<(filehmax+1))
    {
        printf("文件行数为:%d  在最大行数(%d)之内 可以进行操作!",fileh,filehmax);
        getchar();
        goto begin;

    } else {
        printf("文件行数为:%d   大于最大行数:%d  不能进行操作!",fileh,filehmax);
        getchar();
        goto restart;
    }


begin:

//统计完文件行数后。。文件指针指向末尾。需要指向文件开头。
fseek(file,0,SEEK_SET);

//开始录入数据
    for (i=1;i<(fileh+1);i++)
    {

        fgets(CO[i],100,file);
        printf("刚刚读取%d行。数据为:%s",i,CO[i]);
    }

getchar();



//**************************************
/*出错的就是下面这一段。。不能正常比较,一直是大于。。但是循环几遍的过程中出现了相等。。然后就内存溢出了。
*/
//**************************************
a:
for(i=1;i<(fileh+1);(i=i+1))
{

printf("         %d          ",i);
ag=strcmp(CO[i],CO[i+1]);
if (ag>0)
{
printf("str1大于str2的ascii码\n");

swapstr(CO[i],CO[i+1]);


} else if(ag<0)
{
    printf("str1小于str2的ascii码\n");
} else if(ag==0)
{
    printf("两个字符串相等\n");
}


}



getchar();
    for (i=1;i<(fileh+1);i++)
    {
    printf("#%d   ######:%s \n",i,CO[i]);
    }
    getchar();

    goto a;

}
搜索更多相关主题的帖子: include 百度 C语言 字符串 最大的 
2014-02-07 18:01
yangt
Rank: 2
等 级:论坛游民
帖 子:49
专家分:20
注 册:2012-11-28
收藏
得分:3 
太长啦,哥哥!
2014-02-07 19:56
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
收藏
得分:0 
..................


问题可不会因为你代码长就不出现。。。。

再说。。不是标注出出问题是那个地方吗?

。。。
2014-02-08 19:51
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
收藏
得分:0 
我就想知道原因。。。
2014-02-08 19:51
快速回复:奇葩C语言问题。。。不能正常比较。。一直大于。。循环即便又出现等于 ...
数据加载中...
 
   



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

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