所以,我有我的矩阵,让我们说 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中得到了一些东西,但它是一些不可理解的符号。 感谢您的期待。
答案 0 :(得分:0)
一些事情。
首先,您需要为缓冲区分配内存。 sizeof(buffer)
将是指针的大小,而不是缓冲区长度,因此您将其存储在buf_len
中。根据矩阵中数字的位数,缓冲区中可能需要更多或更少的空间。
然后,您不希望在每个buffer
调用时写入snprintf
的开头,但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);