gpt4 book ai didi

c - 将两个字符打包成一个整数

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:19 24 4
gpt4 key购买 nike

我写了一段代码将两个字符打包成一个整数;它应该以十进制和二进制格式输出。

代码编译成功,但问题是,当我输入第一个字符 character1 后,它并没有让我输入 character2 ,而是直接自己进行并到达代码的末尾。我尝试在输入 character1 后添加 getch(),但没有用。我是新来的。任何帮助深表感谢。提前致谢。

下面是我的代码:

#include <stdio.h>
void displayInBitFormat(char character);
void packCharacters(char character1, char character2 );
char character1, character2;

int main(void){

puts("Enter the first character");
scanf("%c",&character1);

printf("\n%c's bit representation is: \n",character1);
displayInBitFormat(character1);

printf("Enter the second character");
scanf("%c",&character2);

getch(); // TRIED ADDING THIS

printf("\n%c's bit representation is: \n",character2);
displayInBitFormat(character2);

puts("");

packCharacters(character1,character2);

getch();

}

void packCharacters(char character1, char character2){

unsigned c;

c=character1; // assigning first character with unsigned

c=c<<8; // shifting first char to 8 bits left
c=c|character2; //bitwise inclusive OR

printf("After packing characters, Result in binary is: \n");
displayInBitFormat(c);
puts("\nResult in decimal number is: ");
printf("%u", c);

}

//bit representer of an int
void displayInBitFormat(char character){

unsigned int i;//counter


unsigned int displayMask=1<<31;
printf("%10u=",character);

for (i=1;i<=32;++i)
{
putchar(character&displayMask ? '1':'0');

character<<=1;
if (i%8==0){
putchar(' ');
}
}
putchar('\n');
}

最佳答案

scanf("%c",&character2);

当您读取第一个字符时,选取输入流中留下的换行符。

将其更改为:

scanf(" %c",&character2);

更新回应@user3615120的评论

假设您在想要阅读第一个字符时输入了aEnter。那时,输入流中有两个字符:'a''\n'。当行

scanf("%c",&character1);

被执行,'a'被读取并存储在character1中。 '\n' 仍然留在输入流中。

什么时候

scanf("%c",&character2);

被执行,'\n'被读取并存储在character2中。当您将该行更改为

scanf(" %c",&character2);

留在流中的空白被丢弃。读取第一个非空白字符并将其存储在 character2 中。

关于c - 将两个字符打包成一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23728558/

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