c语言fscanf参数,C语言关于fscanf的有关问题
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的有关问题相关推荐
- c语言理解参数,c语言中对可变参数列表的简单理解
函数原型中一般情况下参数的数目是固定的,但是如果想在不同的时候接收不定数目的参数时该怎么办呢?c语言提供了可变参数列表来实现. 可变参数列表是通过宏来实现的,这些宏定义在stdarg.h的头文件中.头 ...
- java给r语言传参数_R语言的传参
越南式三明治 1. mac或linux: 脚本第一行加:#!/usr/bin/Rscript 2. commandArgs()传参: 测试脚本test.R:args print(args[1]) pr ...
- C语言 | 函数参数
C语言函数参数 C语言函数的参数可以是变量.变量指针和变量引用. //如下#include<stdio.h> int maxNumber(int x,int y); //此处括号里的x y ...
- C语言可变参数函数_初探
一.什么是可变参数函数 C语言允许定义参数数量可变的函数,这称为可变参数函数(variadic function).这种函数需要固定数量的强制参数,后面是数量可变的可选参数. 其中,强制参数必须至少一 ...
- 【C++ 语言】文件操作 ( fopen | fprintf | fscanf | fgets | fputc | fgetc | ofstream | ifstream )
文章目录 I C 函数 fopen 打开文件 II C 函数 fprintf 写出文件 III C 函数 fscanf 读取文件 ( 遇到空格换行结束) IV C 函数 fgets 读取文件 ( 遇到 ...
- c语言fscanf读入字符,关于C语言读取文件和fscanf函数-c语言fscanf函数C语言编程语言...
FILE * pFile = fopen(" 1.txt"," r"); //获取指向文件的指针 char * pBuf; //定义文件指针 fseek(pFi ...
- Swift 1.1语言函数参数的特殊情况本地参数名外部参数名
Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4 函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部 ...
- c语言int val,c语言不定参数与printf函数的实现
今天学习了C语言不定参数,C语言中的不定参数主要靠这个头文件实现,这个头文件包含了va_list().va_start().va_end()三个宏,其用法为先声明一个va_list类型的变量,它用于访 ...
- c语言怎样获得函数内参数的值_C语言可变参数函数的实现原理
在本人的<C语言可变参数函数的实现方法>一文中,介绍了如何建立自己的可变参数函数. 下面继续介绍可变参数函数的实现原理. 在汇编语言程序设计中,详细介绍了子程序的实现思想: (1)子程序只 ...
最新文章
- C/C++中Static的作用详述
- Netty 入门示例
- mpvue外卖小程序
- JAVA学习之路 不走弯路,就是捷径
- 360极速浏览器无法正确getHours
- 如何创建SAP C4C Product list并用OData服务消费
- 读《编程之美》读后感3
- java中的四个跳转语句_Java中的流程控制语句 (基础篇四)
- C++全能//std//头文件
- 中国超算世界第一 日本拟造最快超级计算机反超
- 《白帽子讲Web安全》| 学习笔记之访问控制
- 佳能Canon PIXMA MP568 一体机驱动
- OPTEE的系统调用
- win10扬声器红叉_win10系统右下角小喇叭红叉显示扬声器耳机或者耳机已拔出的图文技巧...
- RLC串联谐振那些事
- Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!
- 【转贴】【管理】生存奥秘诙谐解说
- 债券的到期收益率、即期收益率、远期收益率及远期利率的推导
- 【考研英语语法】状语从句精讲
- go语言学习第一弹:go和php的区别
热门文章
- android spinner 简书,Spinner添加数据
- app开放接口签名设计与实现
- matlab epub,Matlab语言编程
- PHP一句话木马之小马
- 2007最牛X网站收集
- mysql数据库小_MySQL数据库的一些小知识点
- matlab svd降维测试数据集,SVD降维
- 基克的聚合 机器人_LOLS10机器人怎么玩_9.24辅助机器人符文出装_3DM网游
- M2DGR数据集在一些SLAM框架上的配置与运行:ORB-SLAM系列、VINS-Mono、LOAM系列、FAST-LIO系列、hdl_graph_slam
- Pytest.fixture