看起來(lái)您正在讀取單個(gè)字符,獲取該字符的ASCII碼,并將該數(shù)字轉(zhuǎn)換為4-character字符串,然后將這4個(gè)字符和終止的空字符寫(xiě)回文件。 根據(jù)您在評(píng)論部分提供的信息,這不是有意的。如果我沒(méi)聽(tīng)錯(cuò)的話,你寧愿 將整個(gè)文件作為字符串讀取, 將該字符串轉(zhuǎn)換為數(shù)字, 增加這個(gè)數(shù)字, 將該數(shù)字轉(zhuǎn)換回字符串,然后 用該字符串覆蓋整個(gè)文件。 步驟#1可以通過(guò)函數(shù)read完成。但是,您應(yīng)該讀取整個(gè)文件,而不是只讀取一個(gè)字符。 步驟#2可以通過(guò)使用函數(shù)strtol來(lái)完成。 第三步很簡(jiǎn)單。 步驟#4可以使用函數(shù)snprintf完成。 步驟#5可以通過(guò)使用函數(shù)lseek回放文件,然后使用函數(shù)write來(lái)完成。 我假設(shè)文件中表示的數(shù)字在long int的對(duì)應(yīng)范圍內(nèi),這在大多數(shù)POSIX平臺(tái)上是-9,223,372,036,854,775,808到+9,223,372,036,854,775,807。這意味著字符串的長(zhǎng)度最多可以是19個(gè)字符,包括終止的空字符在內(nèi)的20個(gè)字符。這就是我使用20緩沖區(qū)大小的原因。 char buffer[20], *p;ssize_t bytes_read;long num;bytes_read = read( my_desc, buffer, (sizeof buffer) - 1 );if ( bytes_read <= 0 ){ //TODO: handle inp