C语言中的EOF符号常量
先看一段代碼
代碼 /* 將輸入復(fù)制到輸出:讀一個(gè)字符
while(該字符不是文件結(jié)束指示符)
輸出剛讀入的字符
讀下一個(gè)字符
*/
#include <stdio.h>
int main()
{
int c;
while((c=getchar())!= EOF)
{
putchar(c);
}
return 0;
}
如何區(qū)分文件中的有效數(shù)據(jù)和輸入結(jié)束符呢?
C語言采用的解決辦法是:在沒有輸入時(shí)getchar函數(shù)將返回一個(gè)特殊值,這個(gè)特殊值與任何實(shí)際字符都不同。這個(gè)值成為EOF(end of file ,文件結(jié)束)。我們?cè)诼暶髯兞縞 的時(shí)候,必須讓它大到足以存放getchar函數(shù)返回的任何值。之所以不把c聲明成char類型,是因?yàn)樗仨氉銐虼?#xff0c;除了能存儲(chǔ)任何可能的字符外還要能存儲(chǔ)文件結(jié)束符EOF。
EOF的輸入由系統(tǒng)鎖定。windows下是ctrl+z,linux/unix下是ctrl+d,具體可以s參考這里。
?
?打印EOF的值
/* 打印EOF的值*/
#include <stdio.h>
int main()
{
printf("EOF is %d\n",EOF);
return 0;
}
符號(hào)常量EOF是在頭文件<stdio.h>中定義的。程序中,printf()語句雙引號(hào)外的EOF將被替換為頭文件<stdio.h>中
#define EOF
定義的值。不同的系統(tǒng)中,被定義的值不唯一。這也是使用EOF等標(biāo)準(zhǔn)常量能夠增加程序可移植性的原因所在。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/Ryan_j/archive/2011/01/09/1931513.html
總結(jié)
以上是生活随笔為你收集整理的C语言中的EOF符号常量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: List转DataTable(反射)
- 下一篇: 计算球面上两点弧长