我正在尝试将带有数组的简单结构写入文件,然后读取它。它适用于小于25的小尺寸数组,但由于某种原因,此后的所有数据均未初始化;
typedef struct TestStruct {
int data[30];
} TestStruct;
TestStruct *test = malloc(sizeof(TestStruct));
for (int i = 0; i < 30; i++)
{
test->data[i] = i;
}
const char *filename = "some.txt";
FILE *file = fopen(filename, "w+");
fwrite(test, sizeof(TestStruct), 1, file);
rewind(file);
TestStruct *test2 = malloc(sizeof(TestStruct));
int rc = fread(test2, sizeof(TestStruct), 1, file);
此代码的结果为rc = 0
,并且由于某种原因索引25之后的整数未初始化。谁能解释问题出在哪里?
答案 0 :(得分:3)
import pandas as pd
dfz = pd.read_csv('control.csv', index_col=0, parse_dates=True)
df1 = pd.DataFrame(dfz[0])
print(dfz['Unnamed: 1'])
dfz['Unnamed: 1'].replace('-','')
一起使用的模式字符串中指定b
(对于二进制),因此在读取数据时,control-Z被视为EOF标记。 修复:使用fopen()
而不是"w+b"
来解决问题。
请注意,"w+"
的返回值rc = 0
表示读取未能读取所请求的整个结构(因为在检测到EOF之前仅读取了26个字节,值0..25)。尽力告诉您有问题。
您还应该查看fread()
的返回值,以确保您实际上要编写的所有内容都已编写。