基本的C编程问题

Ami*_*mit 0 c

我刚开始学习C而且它的速度很慢......我想写一个程序,它接受一个整数参数并返回它的加倍值(也就是取整数,乘以2,printf那个值).

我故意不想使用scanf函数.这是我到目前为止所做的以及没有编译的内容......

#include <stdio.h>

int main(int index)
{
    if (!(index)) {
        printf("No index given");
        return 1;
    }
    a = index*2;
    printf("Mult by 2 %d",a);

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

所以基本上当程序执行时我想提供索引整数.所以,在cygwin中,我会写类似的东西./a 10,10会被存储到索引变量中.另外,我想编程返回"No index given"并在没有提供索引值的情况下退出...

有人在乎帮助我做错了吗?

编辑:

此代码在编译时返回1错误,并基于@James的帮助:

#include <stdio.h>

int main(int 1, char index)
{
    int index, a;
    if (!(index)) {
        printf("No index given");
        return 1;
    }
    a = index*2;
    printf("Mult by 2 %d",a);

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

编辑2:考虑一个更简单的程序,其中只取一个值并回显(如下所示)

#include <stdio.h>

int main(int argc, char* argv[])
{
    int index;
    index = argv[1];

    printf("Index is %d, ", index);
    /*if (!(index)) {
        printf("No index given");
        return 1;
    }
    a = index*2;
    printf("Mult by 2 %d",a);*/

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

这个程序无法编译......任何想法?!?啊.

编辑3:这是最终编译和工作的代码.谢谢大家!

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
    if (argc <= 1) 
    {
        printf("No index given");
        return 1;
    }
    int i;
        i = atoi(argv[1]); // convert string in argv[1] to integer
    int a;
        a = i*2;
    printf("Mult by 2: %d",a);
    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

谢谢!阿米特

Jam*_*lis 7

main函数只有两个保证工作原型:一个不带参数(int main(void)),另一个带两个参数,看起来像这样:

int main(int argc, char* argv[])
Run Code Online (Sandbox Code Playgroud)

argc是传递给程序的参数的数量,并且argv是包含传递给程序的参数的数组.

如果要在运行程序时传递参数(而不是提示用户输入),则需要执行此操作

  • 使用main参数的形式,
  • 检查以确保argc大于一(argv[0]程序名称,或应该是),
  • 转换argv[1]从它的字符串表示为一个整数,使用strtol,sscanf或一些其它库函数(避免atoi:它不提供可用错误报告),
  • 然后使用该整数.

  • @Amit:你会想要[一本优秀的初学C书](http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list). (2认同)