0
我遇到了一個與我的C程序邏輯問題。我正在嘗試創建一個像10個隨機數字一樣的內存緩衝區並寫入文本文件的進程。我已經在你的代碼中看到了,但我似乎無法理解如何使用共享內存來做到這一點。共享段內存寫入隨機數
我想了解,我必須先定義一個緩衝區大小,並將商店id存儲到一個項目中,然後我必須將我的隨機數字存儲在該項目數組中。我在想錯嗎? 我錯過了我的邏輯嗎?
這是我到目前爲止有:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <fcntl.h>
#include <errno.h>
int main()
{
int i, n;
time_t t;
n = 10;
srand((unsigned) time(&t));
FILE *fp;
fp = fopen ("letter.txt","a+");
if (fp == NULL) {
printf ("File not created okay, errno = %d\n", errno);
return 1;
}
for(i = 0 ; i < n ; i++) {
fprintf(fp,"%d\n", rand() % 10);
/* here is where I would store the random numbers in the buffer */
}
fclose (fp);
printf ("File created okay\n");
scanf();
return(0);
}
您正在使用哪個平臺?哪個函數需要在該平臺上管理共享內存段? (至少有兩組共享內存調用,加上'mmap()',例如在POSIX系統上可用)。你真正嘗試過什麼?專業提示:在將確定性數據寫入共享內存之後添加隨機數。當數據是隨機的時候,很難判斷你所做的是否正確。你打算如何檢查你寫入共享內存的內容?提示:共享內存通常涉及多個進程共享對單個內存塊的訪問。 – 2014-09-04 16:33:50
請注意,帶有零參數的'scanf()'調用是等待發生的災難。您至少需要格式字符串參數。 – 2014-09-04 16:40:50
oh我seee,讓我改變我的scanf然後即時通訊使用Windows,而且即時通訊使用我的電腦內的debian虛擬機,並使用膩子和納米寫在debian內...所以有一個由兩個或更多的過程我使用的內存塊必須指向相同的內存地址? – AbdulHamid 2014-09-04 17:30:52