C, fprintf, 배열 관련 선배님들 도움 부탁드립니다.
안녕하세요, 매번 도움을 주셔서 즐겁게 배우고 있는 초보입니다.
이번에 짠 코드는 잘은 돌아가는데 몇 가지 의도하지 않은 문제점이 발견되어 여쭙게 되었습니다.
표시해 놓은 fprintf 부분이 잘 되지 않습니다.
ar[p]같은 경우 아무런 문제 없이 돌아가는데, ar2[k]는 출력이 되지 않습니다.
의도한 바는, a++ 때마다 변하는 arrr[ a] 값을, 파일 하나를 열고 그 파일의 모든 ar[ p ]에 더해주려는 것이었습니다.
ar2를 없애고 fprintf에 arr[ p ] + arrr[ a ]를 넣어도 마찬가지구요. while안에서 arrr[ a ]값을 그냥 printf 해 보면 첫 줄은 그냥 0으로만 나오고 두번째 줄 부터는 잘 받아집니다. 물론 while 밖 for문 안에서는 전혀 문제가 없구요..
도움 부탁드립니다.
#include
#include
FILE *SACOPEN;
FILE *epi;
FILE *fil;
FILE *MOD;
int a, k;
int i;
int p;
double ar[ 2000 ];
double ar2[ 2000 ];
double arr[ 2000 ];
double art[ 2000 ];
double arrr[ 2000 ];
char file[ 20 ][ 20 ];
int t;
int j;
char sac[ 20 ];
char sa[ 20 ];
int main(void)
{
fil = fopen( "selected.txt" , "rt" );
epi = fopen( "epi_dis.txt" , "rt" );
for( a=0; a<20; a++ )
{
fscanf( fil , "%s" , &file[ a ] );
fscanf( epi , "%lf" , &arrr[ a ] );
sprintf( sac , "%s" , file[ a ] );
SACOPEN = fopen( sac , "rt");
printf( "Processing : %s \n", file[ a ] );
printf( "%f\n", arrr[ a ] );
sprintf( sa, "C:\\data\\%s", file[ a ] );
MOD = fopen( sa, "wt" );
while( !feof(SACOPEN) )
{
fscanf( SACOPEN , "%lf %le" , &ar[ p ] , &arr[ p ] );
ar2[ k ] = arr[ p ] + arrr[ a ];
fprintf(MOD, "%f %e\n", ar[ p ], ar2[ k ]);
printf( "%f %f\n", ar[ p ] , arrr[ a ] );
}
fclose( MOD );
printf("Work Complete. No. (%d) \n", a+1 );
fclose( SACOPEN );
}
fclose( fil );
fclose( epi );
printf( "Everything's done, Houston.\n" );
return 0;
}
p, k
p와 k에 아무런 값이 할당되지 않았습니다.
제가 알기로는
p, k라 하면 특정값을 할당 안해줘도 저 코딩에서는 가능한 것이 아닌지요?
c에서는 전역변수 선언시..
0으로 초기화 되는 것으로 알고 있습니다..
컴파일러가.. 초기화하지 않은 전역변수에 대해서 값을 bss 저장하기위해서..
어떤 값(?)이 꼭 필요한데 그걸 디폴드값으로 대체하는 것으로 알고 있습니다..
안 달아줘도 초기화야 되겠지만...
스택에 선언한 변수이니 안 달아줘도 초기화야 되겠지만,
heavenlyheavens님이 원하는 값을 얻긴 힘들 것 같은데요...
댓글 달기