gpt4 book ai didi

通过用户 switch-case 进行字符扫描

转载 作者:行者123 更新时间:2023-11-30 17:26:11 24 4
gpt4 key购买 nike

我正在尝试编写一个代码,该代码通过用户获取数字并读取字符“e”或“”(空格)以及数字。我的意思是数字“e”或空格“e”,数字“e”或空格等等。但我得到了荒谬的数字。程序将显示添加的数字。如果输入“\n”,则取数将停止(scanf 将停止)。 (我对标题感到抱歉,因为我对标题没有任何想法)我的错在哪里。感谢您的所有赞赏回答。

输入示例:

  • e 1 8 7 2 3 6
  • e 1 e 8 e 7 e 2 e 3 e6
<小时/>
    #include <stdio.h>

#define MAX 10

void addq ( int *, int, int *, int * ) ;
void test();

int main( )
{

test();
return 0;
}


void test(){

int arr[MAX] ;
int i, front, rear,num ;
char ch;

front = rear = -1 ;
scanf("%c",&ch);
/* initialise data member */
switch(ch){

case 'e':
case ' ':
for ( i = 0 ; i < MAX; i++ ){
arr[i] = scanf("%d",&num);
scanf("%c",&ch);
addq ( arr, num, &front, &rear );
}
break;

}

printf ( "\nElements in the circular queue: " ) ;
display ( arr ) ;

}
void display ( int * arr )
{
int i ;
printf ( "\n" ) ;
for ( i = 0 ; i < MAX ; i++ )
printf ( "%d\t", arr[i] ) ;
printf ( "\n" ) ;
}
/* adds an element to the queue */
void addq ( int *arr, int item, int *pfront, int *prear )
{
if ( ( *prear == MAX - 1 && *pfront == 0 ) || ( *prear + 1 == *pfront ) )
{
printf ( "\nQueue is full." ) ;
return ;
}

if ( *prear == MAX - 1 )
*prear = 0 ;
else
( *prear )++ ;

arr[*prear] = item ;

if ( *pfront == -1 )
*pfront = 0 ;
}

最佳答案

当您使用时

scanf("%c",&ch);

它会跳过空格。你应该使用

int ch; // Use type int, not char.
ch = fgetc(stdin);

关于通过用户 switch-case 进行字符扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26851664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com