このコードの部分は、私が学校で解決していたちょっとした作業です。私がしなければならないのは、oblici.txtファイルを開いて、数字を内部に推測することです(10x10のフィールドは#と#で構成されています)。したがって、文字列sのサイズを計算しなかったため、11の代わりに10個のスペースしか割り当てられませんでした。問題は、それは2を超えることはありません。まあ、私は解決策を見つけましたが(11)、それは問題ありません。なぜそれが問題なのでしょうか?オーバーフローは良いことではありませんが、x
の中に0を書き込む可能性をなくすif(b>0)
を持っていると、地獄でどのように0(9の代わりに)を書くことができますか?私の唯一の推測では、 '\ 0' ... 0の値を持っており、それがb
の内側に書き込まれますが、それだけで意味をなさないdoesntのことだった Cのメモリオーバーフローの混乱
#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がある
: