c - 使用 gdb 调试时的字符/字符串输入
问题描述
我的程序包含 character 的输入代码,但在调试期间它没有考虑它。
它考虑其他数据类型(int、float 等)的输入
程序:
#include<stdio.h>
int main()
{
int n,i=0;
char c;
scanf("%d",&n);
int a[20];
while(1)
{
scanf("%c",&c);
if(c=='\n')
break;
else
{
if(c!=32)
a[i++]=c-48;
}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
解决方案
您scanf("%d",...)
在缓冲区中留下一个换行符,然后立即被后续的scanf("%c",...)
. 为了克服这个问题,在消耗空格scanf
之后只让一个:scanf("%d",...)
int main()
{
int n,i=0;
scanf("%d",&n);
int a[20];
char c=0;
scanf(" %c",&c); // Consume white spaces including new line character before the value for c.
while(c!='\n' && i < 20)
{
if(c!=32) {
a[i++]=c-'0';
}
scanf("%c",&c);
}
for(int x=0;x<i;x++)
printf("%d ",a[x]);
return 0;
}
推荐阅读
- javascript - ton>将鼠标悬停在标签上以更改标签内的按钮颜色
- php - 如何正确“打印”出添加数组的操作
- java - 不是一一打印列表中的值
- javascript - fetch 没有返回响应
- iterm2 - iterm2 片段和操作被禁用
- sql - Return only single record if name is test
- angular - Angular - what is the best approach in retrieving data
- r - How to apply time transformation to a factor variable in cph( ) function
- ruby-on-rails - Fare calculator for any entity
- .net - MAUI 和 Uno 平台有什么区别?