本文繼續整理 C 語言標準庫中以 N 與 O 開頭的實用函數,涵蓋控制台屬性控制、聲音控制、文件操作、硬件端口訪問、圖形文本輸出等領域,提供標準語法與完整代碼示例,助力開發者高效查閱。
函數原型: void normvideo(void);
功能: 將文本屬性(前景色與背景色)恢復為程序啟動時的默認值,選擇標準字符顯示模式。
配合 lowvideo()(低亮度)與 highvideo()(高亮度)可實現文本亮度的動態切換,常用於突出顯示關鍵信息。
函數原型: void nosound(void);
功能: 停止由 sound() 函數啟動的 PC 喇叭發聲。
函數原型: int open(const char *pathname, int flags, ... /* mode_t mode */);
功能: 打開或創建文件,返回文件描述符。常用標誌:O_RDONLY、O_WRONLY、O_RDWR、O_CREAT、O_TRUNC、O_APPEND 等。
示例:
#include <fcntl.h>
#include <io.h>
#include <stdio.h>
#include <string.h>
int main(void) {
int handle;
char msg[] = "Hello world";
if ((handle = open("TEST.$$$", O_CREAT | O_WRONLY | O_TRUNC, S_IREAD | S_IWRITE)) == -1) {
perror("Error:");
return 1;
}
write(handle, msg, strlen(msg));
close(handle);
return 0;
}
函數原型: void outport(int port, int value);
功能: 將 16 位整數輸出到指定 I/O 端口。
函數原型: void outportb(int port, unsigned char value);
功能: 將 8 位字節輸出到指定 I/O 端口,常用於硬件控制編程。
示例:
#include <dos.h>
#include <stdio.h>
int main(void) {
int port = 0x378; // 並口基址
unsigned char value = 0x55;
outportb(port, value);
printf("Value 0x%X sent to port 0x%X\n", value, port);
return 0;
}
函數原型: void far outtext(const char far *textstring);
功能: 在圖形模式下,從當前位置 (CP) 開始輸出字符串,輸出後 CP 移動到字符串末尾。
函數原型: void far outtextxy(int x, int y, const char *textstring);
功能: 在指定座標 (x, y) 輸出字符串,不改變 CP 位置。
示例:
#include <graphics.h>
#include <stdio.h>
int main(void) {
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk) {
printf("Graphics error: %s\n", grapherrormsg(errorcode));
return 1;
}
int midx = getmaxx() / 2;
int midy = getmaxy() / 2;
outtextxy(midx, midy, "Centered Text");
getch();
closegraph();
return 0;
}
應用場景提示:
掌握這些函數,能讓你在系統級編程、硬件交互、圖形界面開發中更加得心應手。