当前位置:网站首页>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 ?
边栏推荐
- EasyUI learn to organize notes
- 《通信软件开发与应用》课程结业报告
- Reasons for the failure of web side automation test
- Superscalar processor design yaoyongbin Chapter 9 instruction execution excerpt
- Talk about SOC startup (VI) uboot startup process II
- Flet教程之 15 GridView 基础入门(教程含源码)
- MySQL安装常见报错处理大全
- 如何理解服装产业链及供应链
- Camera calibration (2): summary of monocular camera calibration
- Unity中SmoothStep介绍和应用: 溶解特效优化
猜你喜欢
Automated testing framework
一度辍学的数学差生,获得今年菲尔兹奖
正在運行的Kubernetes集群想要調整Pod的網段地址
【滤波跟踪】基于matlab扩展卡尔曼滤波EKF和无迹卡尔曼滤波UKF比较【含Matlab源码 1933期】
Programming examples of stm32f1 and stm32subeide -315m super regenerative wireless remote control module drive
Fleet tutorial 19 introduction to verticaldivider separator component Foundation (tutorial includes source code)
Unity中SmoothStep介绍和应用: 溶解特效优化
[extraction des caractéristiques de texture] extraction des caractéristiques de texture de l'image LBP basée sur le mode binaire local de Matlab [y compris le code source de Matlab 1931]
Superscalar processor design yaoyongbin Chapter 8 instruction emission excerpt
《通信软件开发与应用》课程结业报告
随机推荐
请查收.NET MAUI 的最新学习资源
一起探索云服务之云数据库
正在运行的Kubernetes集群想要调整Pod的网段地址
.NET MAUI 性能提升
Sonar:Cognitive Complexity认知复杂度
Matlab implementation of Huffman coding and decoding with GUI interface
正在運行的Kubernetes集群想要調整Pod的網段地址
Rationaldmis2022 advanced programming macro program
What is high cohesion and low coupling?
In depth learning autumn recruitment interview questions collection (1)
Automated testing framework
18 basic introduction to divider separator component of fleet tutorial (tutorial includes source code)
How to write test cases for test coupons?
人大金仓受邀参加《航天七〇六“我与航天电脑有约”全国合作伙伴大会》
R language uses image of magick package_ Mosaic functions and images_ The flatten function stacks multiple pictures together to form a stack layers on top of each other
深度学习秋招面试题集锦(一)
Ask about the version of flinkcdc2.2.0, which supports concurrency. Does this concurrency mean Multiple Parallelism? Now I find that mysqlcdc is full
Flet教程之 15 GridView 基础入门(教程含源码)
In my limited software testing experience, a full-time summary of automation testing experience
Poor math students who once dropped out of school won the fields award this year