C 将长整数数组存储到文件
我的代码是一个全局变量C 将长整数数组存储到文件,c,C,我的代码是一个全局变量long int encryptedKey[100]。假设encryptedKey存储了long int类型的值,我希望将其写入一个文件。下面是我写的代码。 ctr也是一个全局变量,表示当前存储在encryptedKey 写入文件: fptr = fopen("testme1.txt", "w"); for (i = 0; i<ctr; i++) { fputc(encryptedKey[i], fp
long int encryptedKey[100]
。假设encryptedKey
存储了long int类型的值,我希望将其写入一个文件。下面是我写的代码。
ctr
也是一个全局变量,表示当前存储在encryptedKey
写入文件:
fptr = fopen("testme1.txt", "w");
for (i = 0; i<ctr; i++) {
fputc(encryptedKey[i], fptr);
}
fclose(fptr);
我认为这与我写入文件有关,但我似乎无法确定在哪里?函数
fputc
不应用于将整数值写入文件。相反,fputc(encryptedKey[i],fptr)
将encryptedKey[i]
强制转换为unsigned char
,将其视为ASCII值,并将相应的字符写入文件
根据Linux手册页:
int fputc(int c,文件*流)
函数的作用是:写入字符c(转换为``无符号
字符“”)到流所指向的输出流
你应该使用
for (i = 0; i < ctr; i++) {
fprintf(fptr, "%ld\n", encryptedKey[i]);
}
这看起来也很奇怪,写了之后文件里有什么?想发布吗?@Shark不可读字符。我查了一下.txt文件,只查了boxes但是。。。在二进制模式下读取它们时,它们是否与您的密钥匹配?100个字符?那么,您如何将整个文件作为单个
%lld
值来读取呢?当您保存100long int
s时,我的2美分:fscanf
将提供的流中的字符串解析为十进制、浮点等,并将键入的结果存储到提供的指针中。
for (i = 0; i < ctr; i++) {
fprintf(fptr, "%ld\n", encryptedKey[i]);
}
for (i = 0; i < ctr; i++) {
fscanf(fptr, "%ld", &encryptedKey[i]);
}
i = 0;
while(fscanf(fptr, "%ld", &encryptedKey[i]) != EOF) {
++i;
}