读取字符串到文件中很简单,但是如果读取的字符串后面有空格就需要跳过回车(\n)才可以读入。
1.(错误的写法)
FILE *fp;
fp = fopen(“D:\visualcode\C语言读取及修改简单配置文件内容\test_fprintf\my_config”, “w”);
char buffer[200];
scanf("%[^\n]", buffer);
fprintf(fp, “%s\n”, buffer);
scanf("%[^\n]", buffer);
fprintf(fp, “%s\n”, buffer);
scanf("%[^\n]", buffer);
fprintf(fp, “%s\n”, buffer);
scanf("%[^\n]", buffer);
fprintf(fp, “%s\n”, buffer);
fclose(fp);
return 0;
如果scanf()函数中format格式是“%[^\n]"(含义是读取’\n’字符之前的全部字符到变量之中),但是字符串输入结束之后会跟一个回车,由于回车不满足格式的要求,一直没有被提取导致我只输入了一行,文件中就显示了两行,我只知道会有这样的现象但是原理没有搞懂。
程序运行结果:
在控制台程序中输入:
虽然在程序中是需要输入四行数据,但是只输入了一行程序就结束了。
文件内容:
出现了四行相同的内容(并非所要的结果)
结果分析:由于只是将回车前面的字符串写到变量之中,但是由于回车字符没有取,一直没法匹配,导致一直读取前一个字符串给变量。
该进的程序,只需要在将格式替换为"%[\n]%*c’即可,在原来"%[\n]”提取回车之前的字符串的基础上将回车字符取走即可。
FILE *fp;
fp = fopen(“D:\visualcode\C语言读取及修改简单配置文件内容\test_fprintf\my_config”, “w”);
char buffer[200];
scanf("%[^\n]%*c", buffer);
fprintf(fp, “%s\n”, buffer);
scanf("%[^\n]%*c", buffer);
fprintf(fp, “%s\n”, buffer);
scanf("%[^\n]%*c", buffer);
fprintf(fp, “%s\n”, buffer);
scanf("%[^\n]%*c", buffer);
fprintf(fp, “%s\n”, buffer);
fclose(fp);
return 0;
程序结果:
在控制台输入四个字符串
可以输入四个字符串
代开文件:写入成功
LIS LIS即最长上升(不下降)子序列,最主要的是一个d数组,d[i]表示的是长度为i,也就是从1到i,第i位最小的值。 比如一个a数组={3,2,1,2},那么从前往后扫,一开始d[1]=3,因为长度为1的话,3是满足最小的条件,当指到2时候,进行维护,d[1]=2。也就是说,长度为1的话,最小的是2就可以满足了,同理,当a[i]=1时候,d[1]更新为1,因为长度为一,最后那一位是1即可满足。为什么会这样呢,接下来看下一位的2,它比d[1]要大,那么长度就+1,d[...
摘要 通过对SSL握手协议的分析,得知在SSL双向认证握手过程中,客户端需要出示客户端证书以供服务器验证,利用sniffer技术截获网络通信过程中的TCP/IP数据包,通过对TCP/IP数据包的解析,获得客户端证书公钥。 关键字:sniffer,SSL 握手协议,TCP/IP, 证书公钥 相关工具:Ethereal:网络抓包工具,Ethere
systemctl start xxxxx.service命令无法正常启动服务Failed to start LVS and VRRP High Availability Monitor.systemctl 和 keepalived 服务相关命令systemctl 服务相关命令
一、概述对于会被经常复用的总线协议或者功能模块,可以针对其开发专用的验证IP(VIP)。对于总线VIP,需要master agent和slave agent,有时也需要Environment去构建多个主端对从端的验证环境。VIP也需要对应的配置对象,即configuration object,同时也需要对应的接口。二、主要的开发阶段阶段1(定义)功能特性提取特性覆盖率创建及映射VIP的架构阶段2(VIP基本搭建)driver、sequencer、monitor实现基本上的端到
对于当前项目,我必须使用并对基质中提供的信息进行数学化,以及使用ITK / VTK功能来显示医疗信息/渲染.基本上我必须以(我猜)50/50的方式使用matlab例程和VTK / ITK.问题是,由于我必须使用两者,我想提前决定使用哪种方法:>将ITK和VTK库导入matlab:为此你必须建立自己的VTK作为开始.然后,通过this示例,整个想法是在.mex文件中编写VTK代码.这些是文件你...
作者:GWD 时间:2019.7.7一、课程内容:摘要:本节课写了一个程序,a,b,c三个c文件,其中a.c是主函数调用b.c和c.c中的printf函数,目的是引入Makefile以及学习一些Makefile中的规则符号和在Makefile中定义变量。1、问:什么是通配符%,有什么作用?答:通配符是一种特殊语句,用来模糊搜索文件。当查找文件时,可以使用它来代替一个或多个真正字符;当不知道...
下面简单介绍通过创建.bat文件批量启动Tomcat的方法:第一步:创建一个.txt的文本文件,通过重命名把.txt的格式改成.bat格式;第二步:编写文件内容:D: ----Tomcat位置盘符,注:所涉及的Tomcat放同一盘符下;cd D:\javaProject\tomcat-7.0\bin ----第一个Tomc...
文章目录简介JDK16的新特性语言方面的提升内存管理方面的提升Unix-Domain Socket ChannelWarning For Value-based Classes封装内部的JDK包C++ 14语言特性预览语言新特性总结简介在2021年3月16日,JDK的迎来了它的一个新版本JDK16,虽然JDK16不是LTS版本,但是作为下一个LTS版本JDK17的先行版本,JDK16为我们带来了17个方面的提升,包括了新的语言特性、新的工具、内存管理的提升等方面。所以一起来看看,JDK16到底为我们提
flutter中widget主要分为 StatelessWidget 和 StatefulWidget 两种 二者生命周期不太一样。需要持有状态 State,这里面包含了一系列生命周期方法。pub.dev中opengle类库。三棵树,其中 Widget。Flutter中手势识别组件。
今天学习SQLserver 连接以及开窗函数..加油!1、复习:查询(检索)-》筛选列-》筛选行:distinct top where 运算符与关键字:比较运算符,逻辑运算符,between...and...,like '%_[^]'-》分组与聚合函数 group by ... having ... max,min,avg,sum,count-》系统内置函数 类型转换函数:cast(...
Linux程序设计环境 实验1《Linux常用命令和Shell编程》一、实验内容1、脚本一 monitor.sh脚本代码#!/bin/bash# 设置正常屏幕输出reset_terminal=$(tput sgr0)# 声明一个数组declare -A script_array# 声明并初始化循环控制变量ii=1# 声明并初始化提示信息变量tipstips=""# 循环遍历当前目录下其他文件for script_file in `ls -I "monitor.sh" ./`d
1.小程序端代码var app = getApp();var url = 'http://shzujune.com/mianya/public/index/index/wxlogin';var login = function (code, encrypteData, iv) { var that = this //创建一个dialog提示 wx.showToast({ ...