回 帖 发 新 帖 刷新版面

主题:为什么我的程序没有错误,却不能运行?

#include "iostream.h"
#include "fstream.h"
#include "stdlib.h"
#include "string.h"
void swap(char *p1[],int k1,int k2)

    char *p;
    p=p1[k1];p1[k1]=p1[k2];p1[k2]=p;}
int main()
{
    
    int i=0,m=0;
    char *a[500];
    fstream infile;
    infile.open ("word.txt",ios::in);
    if (!infile)
    {
        cerr<<"cant open the  file!"<<endl;
        exit(1);
    }
    while(!infile.eof())
    {
        infile>>a[i];
    
        i++;
        m++;
    
    }
   
    int k,j;
    char *p;
    for(k=0;k<m-1;k++)
        for(j=k+1;j<m;j++)
            if (strcmp(a[k],a[j])>0)
                swap(a,k,j);
    for(k=0;k<m;k++)
        cout<<a[k]<<endl;

    
    infile.close();
}
这个题的意思是想从一个已经创建的 文件中读取英文单词,然后按照字典的顺序进行排序。

回复列表 (共6个回复)

沙发

char *a[500];

问题出在这里,没有分配内存。

板凳

既然用C++,建议用string代替char。

3 楼


能不能给出一个解决的办法?

4 楼


在这个题目中,它要求用指针指向指针的办法来做。我不是很懂,在动态内存这一块也不是很懂,请高手给出具体的解决办法!急需,明天就要用到了,谢谢了!

5 楼

网上找一下,这方面的资料很多。

6 楼

稍改一下:
[code=c]
    char tmp[256]
    while(infile>>tmp)
    {
        a[i] = new char[strlen(tmp)+1];
        strcpy(a[i], tmp);
        i++;
        m++;    
    }
[/code]
记得后面释放new出来的内存。小问题还有些,自己查查吧。

我来回复

您尚未登录,请登录后再回复。点此登录或注册