공통(global) 변수
여러 함수에서 공통으로 사용되는 변수
공통 변수를 정의할 때는 extern 명령어 사용
함수의 바깥에 정의해야 하고, 그 변수를 사용하는 각 함수에서도 정의되어야 한다.
공통변수를 사용하는 함수가 공통변수 선언과 같은 파일에 들어있는 경우에는 함수에서 extern 선언들은 생략할 수 있다.
* 가장 긴 행을 찾는 프로그램 작성 (longest, max, line 변수를 공통으로 사용)
여러 함수에서 공통으로 사용되는 변수
공통 변수를 정의할 때는 extern 명령어 사용
함수의 바깥에 정의해야 하고, 그 변수를 사용하는 각 함수에서도 정의되어야 한다.
공통변수를 사용하는 함수가 공통변수 선언과 같은 파일에 들어있는 경우에는 함수에서 extern 선언들은 생략할 수 있다.
* 가장 긴 행을 찾는 프로그램 작성 (longest, max, line 변수를 공통으로 사용)
#include <stdio.h>
#define MAXLINE 1000 /* maximum input line size */
int max; /* maximum length seen so far */
char line[MAXLINE]; /* current input line */
char longest[MAXLINE]; /* longest line saved here */
int getline(void);
void copy(void);
/* print longest input line; specialized version */
main()
{
int len;
extern int max;
extern char longest[];
max = 0;
while( ( len = getline() ) > 0 )
if( len > max ) {
max = len;
copy();
}
if( max > 0 )
printf( "%s", longest );
return 0;
}
int getline( void )
{
int c, i;
extern char line[];
for( i = 0; i < MAXLINE - 1 && ( c = getchar() ) != EOF && c != '\n'; ++i )
line[i] = c;
if( c == '\n' ) {
line[i] = c;
++i;
}
line[i] = '\0';
return i;
}
void copy( void )
{
int i;
extern char line[], longest[];
i = 0;
while( ( longest[i] = line[i] ) != '\0' )
++i;
}
#define MAXLINE 1000 /* maximum input line size */
int max; /* maximum length seen so far */
char line[MAXLINE]; /* current input line */
char longest[MAXLINE]; /* longest line saved here */
int getline(void);
void copy(void);
/* print longest input line; specialized version */
main()
{
int len;
extern int max;
extern char longest[];
max = 0;
while( ( len = getline() ) > 0 )
if( len > max ) {
max = len;
copy();
}
if( max > 0 )
printf( "%s", longest );
return 0;
}
int getline( void )
{
int c, i;
extern char line[];
for( i = 0; i < MAXLINE - 1 && ( c = getchar() ) != EOF && c != '\n'; ++i )
line[i] = c;
if( c == '\n' ) {
line[i] = c;
++i;
}
line[i] = '\0';
return i;
}
void copy( void )
{
int i;
extern char line[], longest[];
i = 0;
while( ( longest[i] = line[i] ) != '\0' )
++i;
}
- main의 while문에서 getline 함수를 불러 입력된 문자가 EOF가 아니고, 개행문자가 아니면 line 배열에 입력한다.
- 개행문자('\n')가 입력되면 파일의 마지막에 '\0'를 입력하고 총 길이를 main의 len에 반환한다.
- 가장 긴 입력이 들어오면 copy 함수로 저장한다.
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.
,