标题几乎说明了一切。但我正在运行一个字符编码功能,该功能从基于输入的班次的值转移。这个函数运行正常,但是如果调用它上面的函数,则每次返回“Ω”。
的main.c
int main()
{
assignment3();
assignment5();
return 0;
}
equations.c
int assignment4(void)
{
int res1=0, res2=0, res3=0;
float parallel_resistance=0;
printf("Please enter the resistance for three resistors: ");
scanf("%d%d%d",&res1,&res2,&res3);// takes user input for 3 resistances
parallel_resistance=calculate_parallel_resistance(res1,res2,res3);
printf("The parallel resistance is: %.2lf\n\n",parallel_resistance);
return 0;
}
int assignment5(void)
{
char plaintext_character='\0',encoded_character='\0';
int shift=0;
printf("Please enter a character(a - z) and an integer: ");
scanf("%c%d",&plaintext_character,&shift);//takes and assigns the user inputs to the variables
encoded_character=preform_character_encoding(plaintext_character,shift);
printf("The newly created character is now: %c\n\n",encoded_character);
return 0;
}
这些来自上面函数中包含的头文件
char preform_character_encoding(char plaintext_character,int shift_key)
{
char encoded_character='\0';
encoded_character=(plaintext_character-'a')+'A' - shift_key; // calculates the new character
return encoded_character;
}
double calculate_volume_pyramid (double length, double width, double height)
{
double volume=0,lwh=0;
lwh=(double)(length*width*height); // calculates the volume using the inputs
volume=lwh/3.0;
return volume;
}
答案 0 :(得分:1)
从标准输入中读取字符时需要非常小心:使用%c
格式,因为scanf
会返回碰巧在缓冲区中首先出现的任何字符,包括不可打印的字符。在这种情况下,看起来assignment4
在缓冲区中留下悬空\n
。这就是%c
进入assignment5
的角色。
你应该添加一个循环来读取字符,丢弃空格和特殊字符,如下所示:
do (
scanf("%c", &plaintext_character);
} while (c == ' ' || c == '\n');
scanf("%d", &shift);