当前位置: 代码迷 >> C语言 >> 字符串排序小程序求助
  详细解决方案

字符串排序小程序求助

热度:301   发布时间:2008-06-02 16:07:55.0
字符串排序小程序求助
//问题1:将文本文件filestr.txt文件中的字符串(如城市名: Tokyo  Beijng       Bon   Detroit  Jerusalem    London    Moscow     Paris      Rome   Bombey  )进行排序,然后再写回该文件中.如果在变量声明中char* tmpstr则出现内存问题,哪位高人指点一二.
//问题2:这两个语法是否都合适?if(strcmp(buffer[ix],buffer[j])==1)//strcmp(buffer[ix],buffer[j])>0
#include<stdio.h>
#include<stdlib.h>
#include<string.h>


char* buffer[200];

int main(void)
{
    int ix,j,sz;
    FILE* fp;
    char str[200][80];//接受来自文件的字符串
    char tmpstr[20];//char* tmpstr不可以?

    if((fp=fopen("filestr.txt","r+"))==NULL)
    {
        fprintf(stderr,"can't open file filestr.txt .\n");
        exit(1);
    }
    sz=0;
    //从文件中读取字符串存入缓冲区
    while(!feof(fp))
    {
        fscanf(fp,"%10s",str[sz]);
        buffer[sz]=str[sz];
        sz++;
    }
    //排序

    for(ix=0;ix<sz-1;ix++)
        for(j=ix+1;j<sz;j++)
            if(strcmp(buffer[ix],buffer[j])==1)//strcmp(buffer[ix],buffer[j])>0也可?
            {
                strcpy(tmpstr,buffer[ix]);
                    strcpy(buffer[ix],buffer[j]);
                        strcpy(buffer[j],tmpstr);
                 
            }
            sz--;
            rewind(fp);
            for(ix=0;ix<=sz;ix++)
                fprintf(fp,"%10s",buffer[ix]);
        
    fclose(fp);
    return 0;

}
/*原型:extern int strcmp(char *s1,char * s2);
        
// 用法:#include <string.h>
  
  //功能:比较字符串s1和s2。
  
  //说明:
   //     当s1<s2时,返回值<0
        当s1=s2时,返回值=0
        当s1>s2时,返回值>0
*/
搜索更多相关的解决方案: 内存  字符  London  变量  

----------------解决方案--------------------------------------------------------
问题1:
用数组的话,系统会给它分配20各连续的空间,供其存放数据;
但是用指针的话,就只分配了一个空间给指针,后面的19个系统没有分配,你也没有给它分配,所以就不对了.

问题2:
当然都可以了阿,1不就是大于0的么???/

PS:
strcmp的原型不是你给的那样吧???
----------------解决方案--------------------------------------------------------
  相关解决方案