功能问题

时间:2016-02-07 12:14:13

标签: c function getchar

我对代码有两个问题,第一个是程序要我输入我的号码两次,第二个是程序在完成进程后立即关闭。 我曾尝试使用getchar()语句阻止它这样做,但它似乎无法正常工作。

#include <stdio.h>

int square(int);        /*function prototype*/

main()
{
    int x;              /*defining the function*/
    printf("Enter your number\n");
    scanf_s("%d \n", &x);       /*reading the users input*/
    printf("Your new answer is %d \n", square(x)); /*calling the function*/
    getchar();
    getchar();

}

int square(y) /*actual function*/
{
    return y * y;

}

2 个答案:

答案 0 :(得分:1)

通过更改

解决问题
scanf_s("%d \n", &x);

scanf_s("%d", &x);

问题是格式字符串scanf中的空白字符(空格,换行符等)会导致scanf扫描并丢弃任意数量的空白字符(如果有的话),直到第一个非空白角色。

至于getchar()的问题,请将第一个getchar()替换为:

int c;
while((c = getchar()) != '\n' && c != EOF);

这会扫描并丢弃所有内容,直到\nEOF

另外,更改

main()

int main(void)

int square(y)

int square(int y)

答案 1 :(得分:0)

我建议使用scanf("%d", &x);来读取您的号码。您的问题是您的参数如下所示:"%d \n"因此程序希望您输入您的数字AND \ n。这样,你就可以说出你希望x看起来如何,在你的情况下,它希望它是一个数值,一个空格和一行。

至于结束时,请使用getch();。对于此功能,您需要像使用stdio一样包含conio.h,意思是:#include <conio.h>