我在Windows上使用Microsoft Visual C ++。我编译好没有任何错误。但是,当我尝试执行它时,我遇到了两个错误。我读了调试错误,我无法理解它们。我在C编程方面有点新手。
此代码来自第61页的Kernighan和Ritchie的教科书:
#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)
答案 0 :(得分:5)
这不是一个完整的计划。这只是一个功能。如果不编写一些代码来调用它,就无法执行它。
答案 1 :(得分:3)
每个C程序都需要一个入口点,main()
提供了这个。
请参阅以下内容:
答案 2 :(得分: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程序,然后再编写像这样的高级内容。