C 将两个字符打包为整数
我写了一个代码,将两个字符打包成一个整数;它应该以十进制和二进制格式输出 代码编译成功,但问题是,在我输入第一个字符C 将两个字符打包为整数,c,C,我写了一个代码,将两个字符打包成一个整数;它应该以十进制和二进制格式输出 代码编译成功,但问题是,在我输入第一个字符character1后,它并不是要求我输入character2,而是直接运行并到达代码末尾。我尝试在输入character1后添加getch(),但没有用。我是新来的。非常感谢您的帮助。提前谢谢 下面是我的代码: #include <stdio.h> void displayInBitFormat(char character); void packCharacters
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');
}
#包括
void displayInBitFormat(字符);
无效packCharacters(character1、character2);
字符1,字符2;
内部主(空){
输入(“输入第一个字符”);
scanf(“%c”和字符1);
printf(“\n%c的位表示为:\n”,字符1);
displayInBitFormat(字符1);
printf(“输入第二个字符”);
scanf(“%c”和字符2);
getch();//尝试添加此
printf(“\n%c的位表示为:\n”,字符2);
displayInBitFormat(字符2);
认沽权(“”);
packCharacters(character1、character2);
getch();
}
空包字符(字符1、字符2){
无符号c;
c=character1;//为第一个字符分配无符号字符
c=c
拾取读取第一个字符时留在输入流上的换行符
将其更改为:
scanf(" %c",&character2);
更新以回应@user3615120的评论
假设您在想要读取第一个字符时输入了a
和Enter
。此时,输入流中有两个字符:'a'
和'\n'
scanf("%c",&character1);
执行时,'a'
被读取并存储在字符1
中。'\n'
仍保留在输入流中
什么时候
执行时,'\n'
将被读取并存储在字符2中
scanf(" %c",&character2);
流中留下的空白将被丢弃。第一个非空白字符将被读取并存储在character2
中使用getchar()
的另一种可能方法是通过调用getchar()手动吃掉\n
。此外,如果要使用displayInBitFormat
打印组合表达式,则需要使用比char
更宽的类型
#include <stdio.h>
#include <stdlib.h>
void displayInBitFormat(unsigned int character);
void packCharacters(char character1, char character2 );
int character1, character2;
int main(void){
puts("Enter the first character");
character1 = getchar();
// Eat the newline that came from reading the first character.
getchar();
printf("\n%c's bit representation is: \n",character1);
displayInBitFormat(character1);
printf("Enter the second character");
character2 = getchar();
printf("\n%c's bit representation is: \n",character2);
displayInBitFormat(character2);
puts("");
packCharacters(character1,character2);
}
void packCharacters(char character1, char character2){
unsigned int 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\n", c);
}
//bit representer of an int
void displayInBitFormat(unsigned int 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');
}
#包括
#包括
void displayInBitFormat(无符号整数字符);
无效packCharacters(character1、character2);
int字符1,字符2;
内部主(空){
输入(“输入第一个字符”);
character1=getchar();
//阅读第一个角色的新行。
getchar();
printf(“\n%c的位表示为:\n”,字符1);
displayInBitFormat(字符1);
printf(“输入第二个字符”);
character2=getchar();
printf(“\n%c的位表示为:\n”,字符2);
displayInBitFormat(字符2);
认沽权(“”);
packCharacters(character1、character2);
}
空包字符(字符1、字符2){
无符号整数c;
c=character1;//为第一个字符分配无符号字符
c=cAwesome!它起作用了。谢谢。但我没有完全理解解释。如果你不介意的话,请你详细解释一下好吗?作为旁注,当你在这里发帖时,我们已经假设你的代码不起作用了。请不要在你的问题前面加上“代码不起作用”。在UTF-8(和其他编码)中一个字符可以远远超过一个单词。
scanf(" %c",&character2);
#include <stdio.h>
#include <stdlib.h>
void displayInBitFormat(unsigned int character);
void packCharacters(char character1, char character2 );
int character1, character2;
int main(void){
puts("Enter the first character");
character1 = getchar();
// Eat the newline that came from reading the first character.
getchar();
printf("\n%c's bit representation is: \n",character1);
displayInBitFormat(character1);
printf("Enter the second character");
character2 = getchar();
printf("\n%c's bit representation is: \n",character2);
displayInBitFormat(character2);
puts("");
packCharacters(character1,character2);
}
void packCharacters(char character1, char character2){
unsigned int 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\n", c);
}
//bit representer of an int
void displayInBitFormat(unsigned int 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');
}