c/c++语言开发共享如何使用C文件打开函数打开.ttcn文件?

我正在研究TTCN-3(测试和测试控制表示法)脚本语言。 我想准备这个代码文件的指南检查器。

为此,我想将TTCN-3脚本文件(有些像file.ttcn)的行逐个读入缓冲区。 但对我来说,fopen / sopen / open / fgetc / fscanf无法正常工作且无法正确读取文件。 它给出了NULL。 有什么方法可以将它的字符读入缓冲区。 我认为C无法读取超过三个扩展字符的文件(如.ttcn)。 如果我的假设是错误的,请原谅我。

我的环境是Windows上的Turbo C.

编辑

是的我也检查了这些错误,但是他们给read()提供了未知错误,并且没有这样的文件或目录。

我的代码如下

#include  #include  #include  #include  #include  #include  #include  int main(void) { int handle; int status; int i=0; char ch; FILE *fp; char *buffer; char *buf; clrscr(); handle = sopen("c:\tc\bin\hi.ttcn", O_BINARY, SH_DENYNONE, S_IREAD); 

/ 这里甚至我使用O_TEXT和其他人 /

  if (!handle) { printf("sopen failedn"); // exit(1); } printf("nObtained string %s @",buf); close(handle); fp=fopen("c:\tc\bin\hi.ttcn","r"); \sorry for the old version of one slash if(fp==NULL) \I was doing it with argv[1] for opening { \user given file name printf("nCannot open file"); } ch=fgetc(fp); i=0; while(i<10) { printf("ncharacter is %c %d",ch,ch); i++; //Here I wanted to take characters into ch=fgetc(fp); //buffer } getch(); return 0; } 

    最可能的罪魁祸首是你的Turbo C,一个古老的编译器。 它的技术是DOS编译器,而不是Windows。 这会将RunTme Library限制为8.3文件名。 升级到更新的东西 – Turbo C ++似乎是一个合乎逻辑的inheritance者,但微软的VC ++ Express也可以运行。

    你对扩展的假设是错误的。 如果fopen返回NULL,则应输出strerror(errno)的结果或使用perror()函数查看失败的原因。

    编辑 :问题可能是因为你有“c: tc bin hi.ttcn”。 例如,在C中,“ t”被解释为制表符。

    你可以做到

     "c:\tc\bin\hi.ttcn" 

    但这非常难看,你的系统应该接受:

     "c:/tc/bin/hi.ttcn" 

    MS-DOS不知道长文件名,包括扩展名超过3个字符的文件。 因此,Turbo C提供的CRT很可能不会查找您提供的名称,而是查找截断的名称 – 或其他内容。

    Windows方便地提供短(即匹配8.3格式,大部分时间以〜1结尾,除非你使用具有相同8字符前缀的文件)文件名; 发现它的一种方法是打开一个控制台窗口,并在存储文件的文件夹中运行“dir / x”。

    找到与您的文件关联的简短名称,并将其修补到您的C源文件中。

    编辑:Darn,我下次会阅读评论。 j_random_hacker的所有学分。

    现在您已经发布了代码,另一个问题就出现了。

    以下行:

     fp=fopen("c:tcbinhi.ttcn","r"); 

    应改为:

     fp=fopen("c:\tc\bin\hi.ttcn","r"); 

    在C字符串中,反斜杠( )是一个转义字符 ,用于编码特殊字符(例如n表示换行符, t表示制表符)。 要实际使用文字反斜杠,您需要加倍。 目前,编译器实际上正在尝试"C:cinhi.ttcn"打开名为"C:cinhi.ttcn" – 不用说,不存在这样的文件!

      以上就是c/c++开发分享如何使用C文件打开函数打开.ttcn文件?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522073.html

      (0)
      上一篇 2020年12月9日
      下一篇 2020年12月9日

      精彩推荐