iCAx开思工具箱

标题: 请教各位斑竹:FOPEN打开文本文件的问题 [打印本页]

作者: yangdan    时间: 2003-12-20 09:45
标题: 请教各位斑竹:FOPEN打开文本文件的问题
斑竹你好:  
      我的UG是NX2.0版的,每次当程序执行到循环读取文件中的各行:while(!feof(file))时,总是没有数据读出.用同样的方法在c++中执行就没有问题.  
     我用FOPEN打开文件的程序如下:  
    double block_orig[3];//={0,0,0};  
    char *block_len[3];//={"1","2","3"};  
    float sum=0;  
    char f1[5][5],f2[5][5],f3[5][5],f4[5][5],f5[5][5];  
  //  Cstring s1[10],s2[10],s3[10];  
    FILE *fp;  
    int i=0,j;  
  
    if((fp=fopen("Input.txt","r"))==NULL)  
    {  
      uc1601("Error Opening file.",1);  
      exit(1);  
    }  
    uc1601("2",1);  
    while(!feof(fp))  
    {  
      fscanf(fp,"%s %s %s %s %s",[$f1,&f2,&f3,&f4,&f5)]  
      sum=sum+atoi(f1);  
    //  printf("The value are %s,%s,%s,%s,%s\n",f1,f2,f3,f4,f5);  
      //printf("The value are %s,%s,%s,%s,%s\n",f1,f2,f3,f4,f5);  
      uc1601(f1,1);  
      uc1601("Not eof",1);  
      i++;  
    }  
  
    j=i;  
    for(i=0;i<j;i++)  
      printf("All The value are %s,%s,%s,%s,%s\n",f1,f2,f3,f4,f5);  
  
    block_orig[0]=atoi(f1[0]);block_orig[1]=atoi(f2[0]);block_orig[2]=atoi(f3[0]);  
    block_len[0]=f1[1];block_len[1]=f2[1];block_len[2]=f3[1];  
    printf("block are %f:\n",block_orig[0]);  
    printf("block2 are %s:\n",block_len[0]);  
     
//    cout<<block_len[1]<<":len"<<endl;  
    fclose(fp);  
  
在while子句中,只执行了一次,而且所读数据用uc1601显示为乱码,在UG环境中调用则则说内存错误,然后终止运行该程序.  
      编译是正确的,能够生成dll文件.  
  
有可能是我哪个地方没设置好还是跟版本有关?  
我得是NX2.0及VC++6.0中文版的  
  
另外,在利用向导使用external方式产生exe文件时,总提示说找不到一些库,不知怎么回事.
作者: yangdan    时间: 2003-12-23 16:02
各位大侠,怎么没有指教的呀
作者: briangeorge    时间: 2004-2-26 12:53
我试了一下,没有问题啊!uc1601可以显示input.txt中的数字。
乱码的问题没有出现
我的是NX1.0 VC++ 6.0
后面的问题不太清楚,向导生成的模板应该是没有问题的
作者: smthcad    时间: 2004-2-26 13:07
NX2.0怎么在VC下产生的向导
大哥
帮帮忙啊
作者: briangeorge    时间: 2004-2-26 13:50
在VC中建立新工程的时候会在Project里看见Unigraphics NX Wizard V1
不过我的是NX 1.0,NX2.0应该差不多吧
作者: 摇摇晃晃    时间: 2004-2-26 19:47
     char f1[5][5],f2[5][5],f3[5][5],f4[5][5],f5[5][5];   
。。。。。。
  
        fscanf(fp,"%s %s %s %s %s",[$f1,&f2,&f3,&f4,&f5)]   
。。。。。。。。。。
你的fscanf函数中的&f1,取址符是不是不用?怪长时间没用过C语言来读文件了,,,我是在想你的数组是2维的,f1本身就是地址吧

作者: zhjb113    时间: 2004-3-2 22:29
fscanf(fp,"%s %s %s %s %s ",[$f1,&f2,&f3,&f4,&f5)]  
  
注意:在后面的一个引号“前面加上一个空格
祝你成功
作者: yangdan    时间: 2004-3-5 13:14
原因好像是因为打开的文件必须有完整的路径,而不能象在C++中那样可以自动找到当前路径. if((fp=fopen("Input.txt","r"))==NULL) 改为 if((fp=fopen("c:\File\Input.txt","r"))==NULL),后就可以了.
  
感谢指点.
  
不知怎么用相对路径来表示文件,免得程序改换位置后还要修改程序里的路径.
作者: zhjb113    时间: 2004-3-5 18:41
如果是这样的话,你下面的与聚是用来干什么的:
if((fp=fopen("Input.txt","r"))==NULL)  
    {  
      uc1601("Error Opening file.",1);  
      exit(1);  
    }




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3