이 코드 부분은 내가 학교에서 해결하고있는 약간의 작업입니다. 필자가해야 할 일은 oblici.txt 파일을 열고 내부 그림을 추측하는 것입니다 (10x10 필드는 # 및 - 그림 표시). 따라서 문자열 s의 크기를 계산하지 못하고 11 대신 10 개의 공간 만 할당했습니다. 문제는 그것이 2를 넘지 않을 것입니다. 음, 해결책을 찾았지만 효과가 있습니다. 그러나 이것이 왜 문제인지 파악할 수 없습니다. 왜 그것이 문제가되는지, 오버 플로우가 좋은 것은 아니라는 것을 알지만, x
안에 0을 쓰는 가능성을 제거하는 if(b>0)
을 가지고있을 때 지옥에서 어떻게 0을 써야하는지 (9 대신). 내 유일한 추측은 '\ 0'... 0의 값을 가지고 있으며,이 b
의 내부에 기록됩니다하지만 그건 그냥 이해가 나던 것이 었습니다 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은
: