当前位置:网站首页>Problem: the string and characters are typed successively, and the results conflict
Problem: the string and characters are typed successively, and the results conflict
2022-07-07 11:59:00 【CodeQingqing】
Software environment
Microsoft Visual Studio 2010
edition 10.0.40219.1 SP1Rel
Simplify the problem
Add the following code to the project :
#include <stdio.h>
#define NameLength 10
int main()
{
char temp;
char name[NameLength];
printf(" Input name:");
scanf("%d", name);
printf(" Input temp:");
scanf("%c", &temp);
printf("name=%s\n", name);
printf("temp=%c\n", temp);
return 0;
}
The operation results are as follows : Input name when , type “ Li ”, And then line break 
Debug View related variable values :
adopt Baidu ASCII code You know :temp The value of is a newline
analysis
scanf and printf Functions read data from the data stream , For the spacer after the typed data ( In this case, the newline character ),scanf Function will put it back into the input stream , namely : The next time scanf When the function reads input , The first thing to read is , Last read was scanf The function discards the spacer .
This can explain Debug when ,temp The value of is the newline character
Next, expand the situation in the problem , If it is , The running results are different :
- The situation in the question is to use
scanfFunction to type a string , After usescanfFunction to type a single character : The operation result is abnormal , The value of the character is the spacer . - Use twice
scanfFunction to type a single character : The operation result is abnormal , The value of the second character is the spacer . - Use twice
scanfFunction to type a string : Operation result is normal
Suggest
It can be seen from the analysis that , In different cases , The spacer has different effects on the running results . therefore , As the first step to solve the problem , The compiler should be used flexibly Debug function , By looking at the values of related variables , So as to find out whether the spacer has an impact on the final running result .
If Debug after , It is found that the spacer has an impact on the final running result , Then go to the second step to solve the problem .
At present, there is no code similar to formula template , I tried a lot demo, I also learned the method in the reference link , There are many strange ways to find specific implementation methods , But the core of implementation is to solve scanf Function discards the spacer .
therefore , Recommendations are as follows :
- Try not to type characters 、 The statements that type strings are adjacent , Otherwise, it is easy to have problems ;
- Type the string with
getsfunction , Type a single character withgetcharfunction ; - You can study a piece of code logic by yourself , Take countermeasures against the spacer .
Reference link
scanf About %c The problem of
scanf Function use %s Precautions for parameters
scanf How exactly does the function read numbers ?
边栏推荐
- HCIA复习整理
- VIM command mode and input mode switching
- Sonar:Cognitive Complexity认知复杂度
- 110.网络安全渗透测试—[权限提升篇8]—[Windows SqlServer xp_cmdshell存储过程提权]
- 【系统设计】指标监控和告警系统
- 【全栈计划 —— 编程语言之C#】基础入门知识一文懂
- Technology sharing | packet capturing analysis TCP protocol
- R语言使用magick包的image_mosaic函数和image_flatten函数把多张图片堆叠在一起形成堆叠组合图像(Stack layers on top of each other)
- Time bomb inside the software: 0-day log4shell is just the tip of the iceberg
- Superscalar processor design yaoyongbin Chapter 10 instruction submission excerpt
猜你喜欢

Talk about SOC startup (IX) adding a new board to uboot

CMU15445 (Fall 2019) 之 Project#2 - Hash Table 详解

Rationaldmis2022 array workpiece measurement

软件内部的定时炸弹:0-Day Log4Shell只是冰山一角

How much do you know about excel formula?

Flet教程之 18 Divider 分隔符组件 基础入门(教程含源码)

NPC Jincang was invited to participate in the "aerospace 706" I have an appointment with aerospace computer "national Partner Conference

There are so many factors that imprison you

【滤波跟踪】捷联惯导纯惯导解算matlab实现

【紋理特征提取】基於matlab局部二值模式LBP圖像紋理特征提取【含Matlab源碼 1931期】
随机推荐
[system design] index monitoring and alarm system
【紋理特征提取】基於matlab局部二值模式LBP圖像紋理特征提取【含Matlab源碼 1931期】
Camera calibration (1): basic principles of monocular camera calibration and Zhang Zhengyou calibration
正在運行的Kubernetes集群想要調整Pod的網段地址
Use references
Flet tutorial 17 basic introduction to card components (tutorial includes source code)
Have you ever met flick Oracle CDC, read a table without update operation, and read it repeatedly every ten seconds
The Oracle message permission under the local Navicat connection liunx is insufficient
Talk about SOC startup (11) kernel initialization
Matlab implementation of Huffman coding and decoding with GUI interface
The road to success in R & D efficiency of 1000 person Internet companies
Excel公式知多少?
La voie du succès de la R & D des entreprises Internet à l’échelle des milliers de personnes
[neural network] convolutional neural network CNN [including Matlab source code 1932]
软件内部的定时炸弹:0-Day Log4Shell只是冰山一角
核舟记(一):当“男妈妈”走进现实,生物科技革命能解放女性吗?
STM32F1与STM32CubeIDE编程实例-315M超再生无线遥控模块驱动
【纹理特征提取】基于matlab局部二值模式LBP图像纹理特征提取【含Matlab源码 1931期】
110. Network security penetration test - [privilege promotion 8] - [windows sqlserver xp_cmdshell stored procedure authorization]
How to connect 5V serial port to 3.3V MCU serial port?