簡體   English   中英

使用C(syscall)將整數矩陣寫入文本文件?

[英]Using C (syscall) to write an integer matrix into a text file?

所以,我有我的矩陣,讓我們說int matC [N] [N],它已經填充了整數值。

我要做的是將此矩陣保存到.txt文件中。 我試過這個:

1:將矩陣中包含的整數轉換為字符串

char *buffer;
for (int i = 0 ; i < N ; i++)
{
    for (int j = 0 ; j < N ; j++)
    {
        snprintf(buffer, sizeof(matC[i][j]), "%d", matC[i][j]);
    }
}

2:將字符串寫入文件(fileC.txt)

int fdC = open("fileC.txt", O_RDWR);
write(fdC, buffer, sizeof(buffer));

我確實在我的fileC.txt中得到了一些東西,但它是一些不可理解的符號。 感謝您的期待。

一些東西。

首先,您需要為緩沖區分配內存。 sizeof(buffer)將是指針的大小,而不是緩沖區長度,因此您將其存儲在buf_len 根據矩陣中數字的位數,緩沖區中可能需要更多或更少的空間。

然后,您不希望在每次snprintf調用時寫入buffer的開頭,但strchr(buffer, '\\0')將返回指向您要寫入的位置的指針。 第二個參數應該是您當前所在位置的緩沖區長度,即buf_len - strlen(buffer)

最后,您只想將strlen(buffer)字節寫入文件,這樣就不會將隨機字節寫入文件。

char    *buffer;
int     buf_len = 100;


buffer = (char*)malloc(buf_len);
buffer[0] = '\0';
for (int i = 0 ; i < N ; i++)
{
    for (int j = 0 ; j < N ; j++)
    {
        snprintf(strchr(buffer, '\0'), buf_len - strlen(buffer), "%d", matC[i][j]);
    }
}

int fdC = open("fileC.txt", O_RDWR);
write(fdC, buffer, strlen(buffer));
free(buffer);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM