输入数字后,为什么我的C程序无法完成代码?

时间:2013-08-13 01:39:12

标签: c scanf stdio

我刚开始学习C所以我不知道为什么会这样。

#include <stdio.h>

int square(int x);

int main(int argc, const char * argv[])
{
    printf("Enter a number");
    int userNum;
    scanf("%d", &userNum);
    int result = square(userNum);
    printf("The result is %d", result);

}

int square(int x){
    int result = x*x;
    return result;
}

它会要求一个数字,但输入后什么都不会发生。如果我将scanf取出并放入square(10)或其他内容,代码将会运行并完成。

2 个答案:

答案 0 :(得分:3)

它使用gccclang编译并按预期运行...以使其更清晰(因为其他文本可能会妨碍您查看答案)添加新行输出到stdout的内容:

int main( void ) {
    printf("Enter a number: ");

    int userNum;

    scanf("%d", &userNum);

    int result = square(userNum);

    printf("\nThe result is: %d\n", result);

    return 0;
}

如果你在终端测试(而不是管道输入),那么回想一下scanf(带%d占位符)将读取一个整数,直到下一个字符不是数字字符。因此,在键盘上,您需要输入10并返回(或输入)。否则,将程序管道输入文件:

10

...使用以下命令:

./a.out < input.txt

答案 1 :(得分:0)

您的main函数表示返回类型为“ int ”,但您没有返回任何值。

只需在主函数的最后一个大括号之前添加一个语句return 0。

应该可以正常工作。 这是相同的程序,它工作正常。

http://ideone.com/H3Izqh

#include <stdio.h>

int square(int x);

int main(int argc, const char * argv[])
{
    printf("Enter a number");
    int userNum;
    scanf("%d", &userNum);
    int result = square(userNum);
    printf("\nThe result is %d", result);
    return 0;   //NOTICE THIS STATEMENT
}

int square(int x){
    int result = x*x;
    return result;
}