在上一節中的數據文件中(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>"運算符重定向標准錯誤