【问题标题】:Working with .txt in VS2008 in C在 C 中使用 VS2008 中的 .txt
【发布时间】:2015-01-14 10:58:38
【问题描述】:

我写了一些程序,它覆盖了 .txt 文件中的一些文本,并将覆盖的文本放在另一个 output.txt 中......但它总是说文件无法打开。我该怎么办?

#include <stdio.h>
#include <ctype.h>

int main()
{
 FILE *ul=fopen("hexbr.txt","r"),*iz=fopen("bitovi.txt","w");
 int i;
 char ch;

 if ((!ul)||(!iz)) { printf("Neuspesno otvaranje datoteke!");return 0; }
 while((ch=fgetc(ul))!=EOF)
  {
   if ((isdigit(ch)) || (c>='A' && c<='F'))
    {
     if (isalpha(ch))
       switch(ch)
       {
         case 'A': { fputc('1',iz);fputc('0',iz);fputc('1',iz);fputc('0',iz);continue; }
         case 'B': { fputc('1',iz);fputc('0',iz);fputc('1',iz);fputc('1',iz);continue; }
         case 'C': { fputc('1',iz);fputc('1',iz);fputc('0',iz);fputc('0',iz);continue; }
         case 'D': { fputc('1',iz);fputc('1',iz);fputc('0',iz);fputc('1',iz);continue; }
         case 'E': { fputc('1',iz);fputc('1',iz);fputc('1',iz);fputc('0',iz);continue; }
         case 'F': { fputc('1',iz);fputc('1',iz);fputc('1',iz);fputc('1',iz);continue; }
       }
     for(i=0;i<4;i++)
      {
       fputc((ch & 0X8)?'1':'0',iz);
       ch<<=1;
      }
    }
   else fputc(ch,iz);
   if (ch=='\n') { ch=fgetc(ul);fputc(ch,iz); }
  }
 fclose(ul);
 fclose(iz);
 return 0;
}

【问题讨论】:

  • 请显示尝试打开文件的代码。
  • 简单。删除 some 代码,修改 some 其他,不要忘记添加 some 更多。 :-)
  • 程序编译没有错误。主要问题是我不知道将我创建的那些记事本文件放在哪里......我已将它们放在我的项目所在的文件夹中,但它仍然无法打开。然后我把它们放在调试文件夹(项目文件夹的子文件夹)中。然后我将它们包含在项目中。我的文件没有任何作用
  • @DinoDjakovac 请不要将代码放在 cmets 上;几乎不可能阅读。编辑您的问题并在那里添加代码。

标签: c file visual-studio-2008 text


【解决方案1】:

程序没有编译没有错误,这里有一对错别字,c应该是ch

... (c>='A' && c<='F') ...

除此之外,程序几乎可以工作,并且输出文件(在与可执行文件相同的文件夹中创建)是可读的。

尝试处理newline 字符时出现错误,错误地导致下一个(打印)字符被传递,而不是转换为二进制。我留下newlinereturn 像其他非十六进制字符一样通过。

除此之外,A..F 的处理很笨拙。我建议像这样诱捕它们:

while((ch=fgetc(ul))!=EOF)
{
    if ((isdigit(ch)) || (ch>='A' && ch<='F'))
    {
        if (isalpha(ch))
            ch -= 7;
        for(i=0;i<4;i++)
            {
            fputc((ch & 0X8)?'1':'0',iz);
            ch<<=1;
            }
    }
    else fputc(ch,iz);
}

您可能还想检查并转换小写a..f

【讨论】:

  • 我已经把c改成ch了,还是不行。我也将文件放在我的项目所在的位置......并且 cmdprmt 仍然说 CAN'T OPEN FILE :/
  • 希望您已将命令提示符中的当前目录更改为项目目录。你至少能看到dir bitovi.txt的文件吗?
  • 我不明白...你看,我对这个很陌生...所以我什么都不知道
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 2011-10-04
  • 1970-01-01
  • 2011-12-01
  • 2010-10-10
  • 1970-01-01
相关资源
最近更新 更多