-1

我在 Windows 上使用 Microsoft Visual C++。我编译得很好,没有任何错误。但是,当我尝试执行它时,出现了两个错误。我阅读了调试错误,但我无法理解它们。我在 C 编程方面有点新手。

此代码来自 Kernighan 和 Ritchie 的教科书第 61 页:

#include <ctype.h>

/* atoi: convert s to integer; version 2 */
int atoi(char s[])
{
    int i, n, sign;

    for (i=0; isspace(s[i]); i++) /* skip white space */
        ;
    sign = (s[i] == '-') ? -1: 1;
    if (s[i] == '+' || s[i] == '-') /* skip sign */
        i++;
    for (n=0; isdigit(s[i]); i++)
        n = 10 * n + (s[i] - '0');
    return sign*n;
}

错误:

--------------------Configuration: 3.5 - Win32 Debug--------------------
Linking... LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Debug/3.5.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. 3.5.exe - 2 error(s), 0 warning(s) 
4

3 回答 3

5

那不是一个完整的程序。这只是一个功能。如果不编写一些代码来调用它,就无法执行它。

于 2012-12-17T11:35:42.760 回答
3

每个 C 程序都需要一个入口点并main()提供它。

请参考以下内容:

于 2012-12-17T11:42:30.570 回答
1

我想知道你是如何编写整个atoi函数的,而不知道main(). :) 你应该写一个main()函数并atoi像这样调用你:

#include <stdio.h>//Required for printf used in main()
#include <ctype.h>

/* atoi: convert s to integer; version 2 */
int atoi(char s[])
{
    int i, n, sign;

    for (i=0; isspace(s[i]); i++) /* skip white space */
        ;
    sign = (s[i] == '-') ? -1: 1;
    if (s[i] == '+' || s[i] == '-') /* skip sign */
        i++;
    for (n=0; isdigit(s[i]); i++)
        n = 10 * n + (s[i] - '0');
    return sign*n;
}


/* This is the part you've been missing. */
int main(int argc, char **argv)
{
   printf("%d\n",atoi("-100"));
   return 0;
}

我还建议您:首先尝试用 C++ 编写一个 hello world 程序,然后转向编写这样的高级内容。

于 2012-12-17T13:00:35.220 回答