当前位置:网站首页>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 ?
边栏推荐
- Rationaldmis2022 advanced programming macro program
- 超标量处理器设计 姚永斌 第10章 指令提交 摘录
- Flet教程之 16 Tabs 选项卡控件 基础入门(教程含源码)
- Talk about SOC startup (IX) adding a new board to uboot
- Visual Studio 2019 (LocalDB)\MSSQLLocalDB SQL Server 2014 数据库版本为852无法打开,此服务器支持782版及更低版本
- Cmu15445 (fall 2019) project 2 - hash table details
- Improve application security through nonce field of play integrity API
- STM32 entry development NEC infrared protocol decoding (ultra low cost wireless transmission scheme)
- Neural approvals to conversational AI (1)
- 【滤波跟踪】基于matlab扩展卡尔曼滤波EKF和无迹卡尔曼滤波UKF比较【含Matlab源码 1933期】
猜你喜欢
Fleet tutorial 15 introduction to GridView Basics (tutorial includes source code)
CMU15445 (Fall 2019) 之 Project#2 - Hash Table 详解
禁锢自己的因素,原来有这么多
OneDNS助力高校行业网络安全
从工具升级为解决方案,有赞的新站位指向新价值
Cmu15445 (fall 2019) project 2 - hash table details
Stm32f1 and stm32subeide programming example -max7219 drives 8-bit 7-segment nixie tube (based on SPI)
人大金仓受邀参加《航天七〇六“我与航天电脑有约”全国合作伙伴大会》
The road to success in R & D efficiency of 1000 person Internet companies
5V串口接3.3V单片机串口怎么搞?
随机推荐
2022年在启牛开华泰的账户安全吗?
Automated testing framework
Sonar:Cognitive Complexity认知复杂度
110. Network security penetration test - [privilege promotion 8] - [windows sqlserver xp_cmdshell stored procedure authorization]
SwiftUI Swift 内功之如何在 Swift 中进行自动三角函数计算
In SQL, I want to set foreign keys. Why is this problem
Nuclear boat (I): when "male mothers" come into reality, can the biotechnology revolution liberate women?
Flet教程之 15 GridView 基础入门(教程含源码)
[filter tracking] comparison between EKF and UKF based on MATLAB extended Kalman filter [including Matlab source code 1933]
Improve application security through nonce field of play integrity API
[shortest circuit] acwing 1127 Sweet butter (heap optimized dijsktra or SPFA)
. Net Maui performance improvement
【滤波跟踪】基于matlab捷联惯导仿真【含Matlab源码 1935期】
.NET MAUI 性能提升
[neural network] convolutional neural network CNN [including Matlab source code 1932]
R语言可视化分面图、假设检验、多变量分组t检验、可视化多变量分组分面箱图(faceting boxplot)并添加显著性水平、添加抖动数据点(jitter points)
[system design] index monitoring and alarm system
R语言使用quantile函数计算评分值的分位数(20%、40%、60%、80%)、使用逻辑操作符将对应的分位区间(quantile)编码为分类值生成新的字段、strsplit函数将学生的名和姓拆分
R language Visual facet chart, hypothesis test, multivariable grouping t-test, visual multivariable grouping faceting boxplot, and add significance levels and jitter points
相机标定(2): 单目相机标定总结