C语言关于fscanf的问题
目前只学过C和JAVA,然后这学期有个工程实践是让用任何一种语言写DES算法的加密解密。考虑到JAVA学的不怎么好,然后在晚上看到说C在这种数的运算上要更快,所以就用C写的DES加密解密。
最初写的解密算法需要输入密文(64bit),考虑到输入的数据太长,所以想改用文件。
现在写成的结果就是,将加密好的密文通过fprintf写入到 in.text 文件中。解密的时候用fscanf从 in.text 文件中直接读取,然后解密。
一开始我写的是 fprintf(fp1,"%d",output[i]); 发现可以将数据写入到文件中,但如果使用 fscanf(fp1,"%d",&ctext[i]); 读取数据,则数据读取不到。
但如果将两个都改成 fprintf(fp1,"%d\n",output[i]); 和 fscanf(fp1,"%d\n",&ctext[i]); 则写入文件和读取文件都是正常的。
所以,为什么加了一个换行符就正确了?
另外,如果有个for循环,每次fscanf读取两个字符,例如fscanf(fp1,"%d\n%d\n",&a,&b); 然后读取的文件里的数据是1\n2\n3\n4\n,那么第一次读取是读取的1 2 第二次就是读取3 4吗?
再另外,关于DES算法实现的一个问题,听说DES算法的好代码都是用 布尔型 的数组保存的二进制数,记得同学说的貌似是因为布尔型运算快一些。这是为什么呢?对于布尔型懂得不多。有了解的人麻烦大体讲一下吧。
谢谢各位了。
------解决方案-