字符串排序小程序求助
//问题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
*/
----------------解决方案--------------------------------------------------------
问题1:
用数组的话,系统会给它分配20各连续的空间,供其存放数据;
但是用指针的话,就只分配了一个空间给指针,后面的19个系统没有分配,你也没有给它分配,所以就不对了.
问题2:
当然都可以了阿,1不就是大于0的么???/
PS:
strcmp的原型不是你给的那样吧???
----------------解决方案--------------------------------------------------------