-1

Windows で Microsoft Visual C++ を使用しています。エラーなく正常にコンパイルできました。しかし、実行しようとすると、2 つのエラーが発生しました。デバッグエラーを読みましたが、理解できませんでした。私は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++ で h​​ello world プログラムを作成してから、このような高度なものを作成してください。

于 2012-12-17T13:00:35.220 に答える