在上一節中的數據文件中(C語言學習007:重定向標准輸入和輸出),如果文件中的數據包含非法數據,如何讓程序顯示一條錯誤的提示消息呢?就需要用到標准錯誤
1 #include <stdio.h> 2 3 int main(){ 4 float latitude; 5 float longitude; 6 char info[80]; 7 int started=0; 8 puts("data["); 9 while(scanf("%f,%f,%79[^\n]",&latitude,&longitude,info)==3){ 10 if(started){ 11 printf(",\n"); 12 } 13 else{ 14 started=1; 15 } 16 if((latitude<-90.0)||(latitude>90.0)){ 17 fprintf(stderr,"Invalid latitude:%f\n",latitude);//fprintf既可以把文件發送到標准輸出(stdout),也可以發送到標准錯誤(stderr) 18 return 2; 19 } 20 if((longitude<-180.0)||(longitude>18.0)){ 21 fprintf(stderr,"Invalid longtitude:%f\n",longitude); 22 return 2; 23 } 24 printf("{latitude:%f,longitude:%f,info:'%s'}",latitude,longitude,info); 25 } 26 puts("\n]"); 27 return 0; 28 }
我們可以看到,即使用”>“運算符重定向輸出到output.json文件,依然可以在屏幕上看到錯誤消息;創建標准錯誤的目的就是為了區分普通輸出和錯誤消息
還有更厲害的是我們可以用"2>"運算符重定向標准錯誤