【问题标题】:Read characters from a file. C language从文件中读取字符。 C语言
【发布时间】:2011-12-08 06:19:35
【问题描述】:

这是文件。

X   1   0   1
1   X   X   1
1   0   1   0

1   1   0   X
0   X   1   1
1   X   1   0  

这是我的代码.. 版本 1。

char cha2[1];
int patternStored[180];
for(a=0;a<(numberOfPatterns*12);a++)
    {
        fscanf(patternMatFile,"%1s",cha2);
        if(cha2[0]=='X')
        {
            patternStored[a]=2;
        }
        else
        {
            patternStored[a]=atoi(cha2);
        }
    }

代码的目的是一次读取一个字符并将其保存到数组中 上面的代码工作正常,但是..

在循环结束时,我遇到了这个错误

Run-Time Check Failure #2 - Stack around the variable 'cha2' was corrupted.

这是第二个版本。

char cha[4];
int patternStored[180];
for(a=0;a<(numberOfPatterns*12);a++)
    {
        fscanf(patternMatFile,"%c",cha);
        if(cha[0]=='X')
        {
            patternStored[a]=2;
        }
        else
        {
            patternStored[a]=atoi(cha);
        }
    }

第二个版本没有错误。但它只适用于%d.. 只有数字..

我实际上不知道使用fscanf 从文件中获取单个字符的正确方法,尤其是%

Tkz..

【问题讨论】:

  • 从文件中读取时,fscanf 几乎永远不是答案。 fgets / sscanf 几乎总是更好,而且通常有比这更好的方法。

标签: c


【解决方案1】:

要获取字符,您需要使用%c

【讨论】:

  • 我在版本1中使用%c而不是%1s。没有错误。是的,那太好了。我在循环的末尾放了一个 break 并检查我的整数数组,它有 -858993460 除了第一个。我追踪了前 5 次。并且只有前 5 个值在其中。是正常的还是错的??
猜你喜欢
  • 2017-03-18
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
相关资源
最近更新 更多