使用 C(系统调用)将整数矩阵写入文本文件?

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 中。根据矩阵中数字的位数,缓冲区中可能需要或多或少的 space。

然后,您不想在每次 snprintf 调用时写入 buffer 的开头,但是 strchr(buffer, '[=15=]') 会 return 指向您所在位置的指针想写信给。第二个参数应该是你当前所在位置的缓冲区长度,即 buf_len - strlen(buffer)

最后,您只想向文件写入 strlen(buffer) 个字节,这样您就不会向文件写入随机字节。

char    *buffer;
int     buf_len = 100;


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

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