这部分代码只是我在学校解决的一项任务。我应该做的只是打开文件oblici.txt并猜测里面的数字(10x10字段由#和 - 显示图)。所以,我想念字符串s的大小,而不是11我只分配了10个空格。问题是,它不会超过2.好吧,我找到了一个解决方案(s [11]并且它有效)但是无法弄清楚为什么这是一个问题。不仅仅是为什么它是一个问题,我知道溢出并不是一件好事,但是如果我有if(b>0)
这样的话可以写出0(而不是9),这样可以消除在数组中写入0的可能性x
。我唯一的猜测是'\ 0'的值为0,它写在b
内但是没有意义......
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp=NULL;
int x[10],i,j=0,b=0;
char s[10];
fp=fopen("c:\\temp\\oblici.txt","r");
if (fp==NULL)
exit(1);
while(fscanf(fp,"%s",s)!=EOF){
for(i=0;i<10;i++)
if(s[i]=='-')
b++;
if(b>0)
x[j++]=b;
b=0;
}
for(i=0;i<j;i++)
printf("%d ",x[i]);
fclose(fp);
}
oblici.txt在哪里:
答案 0 :(得分:3)
这是因为每行末尾都有换行符(\n
),因此每行总共有11个字符。使用10次搞砸计算。
作为提示,顺便说一句,请避免在{}
,if
和for
语句周围使用while
,因为这是引入错误的一种非常常见的方法!