#INCLUDE <STDIO.H>
#DEFINE 맥스 1,000
#DEFINE 맥스 1,000
INT 최대;
숯 라인 [맥스];
숯 긴 [맥스];
숯 라인 [맥스];
숯 긴 [맥스];
INT의 getline (공극);
무효 카피 (보이드);
무효 카피 (보이드);
/ * 특히 * 버전 * / 긴 라인 인쇄
의 main ()
{
; INT LEN
통근 INT의 최대,
통근 CHAR 긴 []
최대 = 0;
그동안 ((LEN =의 getline ())> 0)
IF (LEN> 최대)
{
최대 = 렌,
복사 ();
}
IF (최대> 0) / * 행 * /있다
의 printf ( "% S의"긴)
복귀 0;
}
의 main ()
{
; INT LEN
통근 INT의 최대,
통근 CHAR 긴 []
최대 = 0;
그동안 ((LEN =의 getline ())> 0)
IF (LEN> 최대)
{
최대 = 렌,
복사 ();
}
IF (최대> 0) / * 행 * /있다
의 printf ( "% S의"긴)
복귀 0;
}
/ *의 getline函数:特别版本* /
INT의 getline (공극)
{
INT의 C, I;
통근 숯 라인 [];
위한 (! I <맥스 1 && C = '\ n'; I 0 = I ++)
라인 [I] = C;
경우 (c == '\ n')
{
라인 [I] = C;
난을 ++;
}
라인 [I] = '\ 0';
난을 반환;
}
INT의 getline (공극)
{
INT의 C, I;
통근 숯 라인 [];
위한 (! I <맥스 1 && C = '\ n'; I 0 = I ++)
라인 [I] = C;
경우 (c == '\ n')
{
라인 [I] = C;
난을 ++;
}
라인 [I] = '\ 0';
난을 반환;
}
/ * 복사 기능 : 특별 버전 * /
무효 복사 (무효)
{
INT I;
통근 문자 라인 [], [] 긴,
I = 0;
그동안 ((긴 [I] = 라인 [I]) = '\ 0! ')
++ 나는;
}
무효 복사 (무효)
{
INT I;
통근 문자 라인 [], [] 긴,
I = 0;
그동안 ((긴 [I] = 라인 [I]) = '\ 0! ')
++ 나는;
}
在该例子中,前几行定义了main、getline与copy函数使用的几个外部变量,声明了各外部变量的类型,这样编译程序将为他们分配存储单元。从语法角度上来看,外部变量的定义与局部变量的定义是相同的,但由于他们各位于各函数的外部,因此这些变量是外部变量。函数在使用外部变量之前,必须知道外部变量的名字。要达到该目的,一种方式是在函数中使用extern类型的声明。这种类型的声明除了在前面加一个关键字extern外,其他方面与普通变量的声明相同。
如果程序包含在多个源文件中,而某个变量在file1文件中定义、在file2和file3中使用,那么在文件file2和文件file3中就需要使用extern声明来建立该变量与其定义之间的联系。人们通常把变量和函数的extern声明放在一个单独的文件中(习惯上称之为头文件),并在每个源文件的开头使用#include语句把所有要用的头文件包含进来。后缀名.h约定为头文件名的扩展名。
如果程序包含在多个源文件中,而某个变量在file1文件中定义、在file2和file3中使用,那么在文件file2和文件file3中就需要使用extern声明来建立该变量与其定义之间的联系。人们通常把变量和函数的extern声明放在一个单独的文件中(习惯上称之为头文件),并在每个源文件的开头使用#include语句把所有要用的头文件包含进来。后缀名.h约定为头文件名的扩展名。