当前位置:网站首页>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
scanf
Function to type a string , After usescanf
Function to type a single character : The operation result is abnormal , The value of the character is the spacer . - Use twice
scanf
Function to type a single character : The operation result is abnormal , The value of the second character is the spacer . - Use twice
scanf
Function 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
gets
function , Type a single character withgetchar
function ; - 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 ?
边栏推荐
- 通过环境变量将 Pod 信息呈现给容器
- 核舟记(一):当“男妈妈”走进现实,生物科技革命能解放女性吗?
- Matlab implementation of Huffman coding and decoding with GUI interface
- Improve application security through nonce field of play integrity API
- The annual salary of general test is 15W, and the annual salary of test and development is 30w+. What is the difference between the two?
- The Oracle message permission under the local Navicat connection liunx is insufficient
- What is high cohesion and low coupling?
- Flet教程之 16 Tabs 选项卡控件 基础入门(教程含源码)
- SwiftUI Swift 内功之 Swift 中使用不透明类型的 5 个技巧
- Visual Studio 2019 (LocalDB)\MSSQLLocalDB SQL Server 2014 数据库版本为852无法打开,此服务器支持782版及更低版本
猜你喜欢
Flet教程之 14 ListTile 基础入门(教程含源码)
Flet教程之 19 VerticalDivider 分隔符组件 基础入门(教程含源码)
清华姚班程序员,网上征婚被骂?
正在運行的Kubernetes集群想要調整Pod的網段地址
SwiftUI Swift 内功之如何在 Swift 中进行自动三角函数计算
OneDNS助力高校行业网络安全
Sonar:Cognitive Complexity认知复杂度
Test the foundation of development, and teach you to prepare for a fully functional web platform environment
There are so many factors that imprison you
Superscalar processor design yaoyongbin Chapter 8 instruction emission excerpt
随机推荐
超标量处理器设计 姚永斌 第10章 指令提交 摘录
【滤波跟踪】捷联惯导纯惯导解算matlab实现
Solve the problem that vscode can only open two tabs
Fleet tutorial 14 basic introduction to listtile (tutorial includes source code)
Sonar:Cognitive Complexity认知复杂度
In depth learning autumn recruitment interview questions collection (1)
Flet教程之 19 VerticalDivider 分隔符组件 基础入门(教程含源码)
Suggestions on one-stop development of testing life
There are so many factors that imprison you
C#中在路径前加@的作用
Onedns helps college industry network security
Camera calibration (1): basic principles of monocular camera calibration and Zhang Zhengyou calibration
Flet教程之 18 Divider 分隔符组件 基础入门(教程含源码)
【滤波跟踪】基于matlab捷联惯导仿真【含Matlab源码 1935期】
Talk about SOC startup (x) kernel startup pilot knowledge
软件内部的定时炸弹:0-Day Log4Shell只是冰山一角
Steps of redis installation and self startup configuration under CentOS system
Two week selection of tdengine community issues | phase II
Electron adding SQLite database
When sink is consumed in mysql, the self incrementing primary key has been set in the database table. How to operate in Flink?