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算法的好代码都是用 布尔型 的数组保存的二进制数,记得同学说的貌似是因为布尔型运算快一些。这是为什么呢?对于布尔型懂得不多。有了解的人麻烦大体讲一下吧。

谢谢各位了。

------解决方案--------------------

一开始我写的是  fprintf(fp1,"%d",output[i]);  发现可以将数据写入到文件中,但如果使用   fscanf(fp1,"%d",&ctext[i]);  读取数据,则数据读取不到。

比如你写入1到9的值 文本中存入为123456789,试问一下如果你写入的太多 怎么用fscanf读到数据呢?说白了就是你没有存入数据的个数 若你加入了换行或者空格等等能识别的符号 当然不包括数字 比如fprintf(fp1,"%d ",output[i])再用fscanf(fp1,"%d ",&ctext[i])也能正确读到你存入的数据 这样也就解决你第二问的问题了

至于用bool类型能快一些,个人认为快不了多少(甚至不会快,可能是多此一举吧,个人意见),虽然DES算法中用到的与或等操作多,但试想一下 比如3和8求或操作 他们在计算机中存入的方法本来就是2进制,你用bool类型也是2进制,这样就没有加快你的算法等等,如果想加快 还是建议从算法上改进吧

------解决方案--------------------

仅供参考#pragma comment(lib, "crypt32.lib")

#pragma comment(lib, "advapi32.lib")

#define _WIN32_WINNT 0x0400

#include

#include

#include

#define MY_ENCODING_TYPE  (PKCS_7_ASN_ENCODING

------解决方案--------------------

X509_ASN_ENCODING)

#define KEYLENGTH  0x00800000

void HandleError(char *s);

//--------------------------------------------------------------------

//  These additional #define statements are required.

#define ENCRYPT_ALGORITHM CALG_RC4

#define ENCRYPT_BLOCK_SIZE 8

//   Declare the function EncryptFile. The function definition

//   follows main.

BOOL EncryptFile(

PCHAR szSource,

PCHAR szDestination,

PCHAR szPassword);

//--------------------------------------------------------------------

//   Begin main.

void main(void) {

CHAR szSource[100];

CHAR szDestination[100];

CHAR szPassword[100];

printf("Encrypt a file. \n\n");

printf("Enter the name of the file to be encrypted: ");

scanf("%s",szSource);

printf("Enter the name of the output file: ");

scanf("%s",szDestination);

printf("Enter the password:");

scanf("%s",szPassword);

//--------------------------------------------------------------------

// Call EncryptFile to do the actual encryption.

if(EncryptFile(szSource, szDestination, szPassword)) {

printf("Encryption of the file %s was a success. \n", szSource);

printf("The encrypted data is in file %s.\n",szDestination);

} else {

HandleError("Error encrypting file!");

}

} // End of main

//--------------------------------------------------------------------

//   Code for the function EncryptFile called by main.

static BOOL EncryptFile(

PCHAR szSource,

PCHAR szDestination,

PCHAR szPassword)

//--------------------------------------------------------------------

//   Parameters passed are:

//     szSource, the name of the input, a plaintext file.

//     szDestination, the name of the output, an encrypted file to be

//         created.

//     szPassword, the password.

{

//--------------------------------------------------------------------

//   Declare and initialize local variables.

FILE *hSource;

FILE *hDestination;

HCRYPTPROV hCryptProv;

HCRYPTKEY hKey;

HCRYPTHASH hHash;

PBYTE pbBuffer;

DWORD dwBlockLen;

DWORD dwBufferLen;

DWORD dwCount;

c语言fscanf参数,C语言关于fscanf的有关问题相关推荐

  1. c语言理解参数,c语言中对可变参数列表的简单理解

    函数原型中一般情况下参数的数目是固定的,但是如果想在不同的时候接收不定数目的参数时该怎么办呢?c语言提供了可变参数列表来实现. 可变参数列表是通过宏来实现的,这些宏定义在stdarg.h的头文件中.头 ...

  2. java给r语言传参数_R语言的传参

    越南式三明治 1. mac或linux: 脚本第一行加:#!/usr/bin/Rscript 2. commandArgs()传参: 测试脚本test.R:args print(args[1]) pr ...

  3. C语言 | 函数参数

    C语言函数参数 C语言函数的参数可以是变量.变量指针和变量引用. //如下#include<stdio.h> int maxNumber(int x,int y); //此处括号里的x y ...

  4. C语言可变参数函数_初探

    一.什么是可变参数函数 C语言允许定义参数数量可变的函数,这称为可变参数函数(variadic function).这种函数需要固定数量的强制参数,后面是数量可变的可选参数. 其中,强制参数必须至少一 ...

  5. 【C++ 语言】文件操作 ( fopen | fprintf | fscanf | fgets | fputc | fgetc | ofstream | ifstream )

    文章目录 I C 函数 fopen 打开文件 II C 函数 fprintf 写出文件 III C 函数 fscanf 读取文件 ( 遇到空格换行结束) IV C 函数 fgets 读取文件 ( 遇到 ...

  6. c语言fscanf读入字符,关于C语言读取文件和fscanf函数-c语言fscanf函数C语言编程语言...

    FILE * pFile = fopen(" 1.txt"," r"); //获取指向文件的指针 char * pBuf; //定义文件指针 fseek(pFi ...

  7. Swift 1.1语言函数参数的特殊情况本地参数名外部参数名

    Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4  函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部 ...

  8. c语言int val,c语言不定参数与printf函数的实现

    今天学习了C语言不定参数,C语言中的不定参数主要靠这个头文件实现,这个头文件包含了va_list().va_start().va_end()三个宏,其用法为先声明一个va_list类型的变量,它用于访 ...

  9. c语言怎样获得函数内参数的值_C语言可变参数函数的实现原理

    在本人的<C语言可变参数函数的实现方法>一文中,介绍了如何建立自己的可变参数函数. 下面继续介绍可变参数函数的实现原理. 在汇编语言程序设计中,详细介绍了子程序的实现思想: (1)子程序只 ...

最新文章

  1. C/C++中Static的作用详述
  2. Netty 入门示例
  3. mpvue外卖小程序
  4. JAVA学习之路 不走弯路,就是捷径
  5. 360极速浏览器无法正确getHours
  6. 如何创建SAP C4C Product list并用OData服务消费
  7. 读《编程之美》读后感3
  8. java中的四个跳转语句_Java中的流程控制语句 (基础篇四)
  9. C++全能//std//头文件
  10. 中国超算世界第一 日本拟造最快超级计算机反超
  11. 《白帽子讲Web安全》| 学习笔记之访问控制
  12. 佳能Canon PIXMA MP568 一体机驱动
  13. OPTEE的系统调用
  14. win10扬声器红叉_win10系统右下角小喇叭红叉显示扬声器耳机或者耳机已拔出的图文技巧...
  15. RLC串联谐振那些事
  16. Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!
  17. 【转贴】【管理】生存奥秘诙谐解说
  18. 债券的到期收益率、即期收益率、远期收益率及远期利率的推导
  19. 【考研英语语法】状语从句精讲
  20. go语言学习第一弹:go和php的区别

热门文章

  1. android spinner 简书,Spinner添加数据
  2. app开放接口签名设计与实现
  3. matlab epub,Matlab语言编程
  4. PHP一句话木马之小马
  5. 2007最牛X网站收集
  6. mysql数据库小_MySQL数据库的一些小知识点
  7. matlab svd降维测试数据集,SVD降维
  8. 基克的聚合 机器人_LOLS10机器人怎么玩_9.24辅助机器人符文出装_3DM网游
  9. M2DGR数据集在一些SLAM框架上的配置与运行:ORB-SLAM系列、VINS-Mono、LOAM系列、FAST-LIO系列、hdl_graph_slam
  10. Pytest.fixture