繁体   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