Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将长整数数组存储到文件_C - Fatal编程技术网

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
值来读取呢?当您保存100
long 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; 
}