C語言無緩衝區 求解~~~

題目為:

試依下列步驟完成程式設計:

(1).式產生1~64之間的亂數整數,並將他寫入純文字檔"rand.txt"內

(2).撰寫一程式讀取純文字檔rand.txt的內容,並計算這10個數值的平均值。

以下是第一題,我把取10個亂數寫入arr陣列中,但卡在寫入rand.txt 但不知是我少打了什麼....一直想不出來....

#include <stdio.h>

#include <stdlib.h>

#include <fcntl.h>

#include <io.h>

#include <sys/stat.h>

#include <time.h>

#define MAX 10

int main(void)

{

int i,a,arr[MAX],f1;

srand(time(NULL));

printf("取亂數(10個):\n");

for(i=0;i<MAX;i++)

{

a=(rand()%64)+1;

printf("%02d ",a);

arr[i]=a;

}

printf("\n");

f1=creat("C:\\Users\\PC\\Desktop\\C\\Ch12\\rand.txt",S_IWRITE);

if(f1!=-1)

{

write(f1,arr,sizeof(int));

close(f1);

}

else

printf("檔案開啟失敗 \n");

printf("\n");

system("pause");

return 0;

}

希望可以附上第2題的程式碼~~~~感謝高手幫忙~~~~~~

2 個解答

評分
  • 5 年前
    最佳解答

    錯誤不少,心先說簡單的:

    1. write (f1, arr, sizeof(int)); //只寫了4bytes!

    所以 sizeof() operator 應該避免用在 "形態"上 而應該用在"物件"上

    所以改成

    write(f1, arr, sizeof(arr));

    2. write(f1, arr, sizeof(arr); // 只寫了40 bytes binary!!!

    妳的 "*.txt" file 要放 binary嗎?

    3. write(f1 arr, sizeof(arr)); // 誰說write()一定一次全部完成?

    // change to:

    for(int s=0; s+=write(f1, &((char*)arr)[s], sizeof(arr)-s););

    2014-11-18 00:15:37 補充:

    糟糕 "< "號又被吃了!for loop 應該寫成:

    for(int s=0; 40>(s+=....););

    • 登入以對解答發表意見
  • 5 年前

    36588現金網●誠徵經銷商、會員●

    請洽客服 官網 : A36588.NET

    • 登入以對解答發表意見
還有問題?馬上發問,尋求解答。