好的,我已经用 C++ 编程了一段时间,我正试图帮助一个朋友完成他用 C 完成的作业。在研究了如何用 C 做一些与 C++ 不同的事情之后,我开始帮助我的朋友制作一个简单的程序,将某些内容打印到控制台,然后读取用户输入的内容。我们有以下代码:
#include <stdlib.h>
#include <stdio.h>
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
int main(int argc, char* argv[])
{
char str1[] = "Please enter your name.";
printf(str1); // This appears to be the nuisance line.
char buffer[64];
fgets(buffer, 64, stdin);
printf("Your name is %s", buffer);
Sleep(5000);
return 0;
}
好的,现在这是奇怪的事情。尝试编译时,我在控制台中收到以下错误。
1>c:\users\nkosi\documents\visual studio 2012\projects\c++\credit2\credit2\main.c(12): error C2143: syntax error : missing ';' before 'type'
1>c:\users\nkosi\documents\visual studio 2012\projects\c++\credit2\credit2\main.c(13): error C2065: 'buffer' : undeclared identifier
1>c:\users\nkosi\documents\visual studio 2012\projects\c++\credit2\credit2\main.c(13): warning C4047: 'function' : 'char *' differs in levels of indirection from 'int'
1>c:\users\nkosi\documents\visual studio 2012\projects\c++\credit2\credit2\main.c(13): warning C4024: 'fgets' : different types for formal and actual parameter 1
1>c:\users\nkosi\documents\visual studio 2012\projects\c++\credit2\credit2\main.c(15): error C2065: 'buffer' : undeclared identifier
但是,如果我删除printf 语句下面的所有代码,程序将完美地编译和运行。如果我取出 printf 语句,程序将完美编译并运行。为了看看这个错误有多奇怪,我把代码改成了这个,看看我编译它时会发生什么:
int main(int argc, char* argv[])
{
char str1[] = "Please enter your name.";
printf(str1); // This appears to be the nuisance line.
int x = 5;
return 0;
}
编译时出现以下错误...
1>c:\users\nkosi\documents\visual studio 2012\projects\c++\credit2\credit2\main.c(12): error C2143: syntax error : missing ';' before 'type'
我决定看看其他人的使用 printf 的 C 程序,看起来我根本没有做错什么。我正在使用 Visual Studio 2012,我认为这是这里的问题。我可能不会使用 C,但我知道原始代码是完全有效的 C++ 代码(我将其编译为 C++ 代码,它编译并运行良好),而且它似乎是完全有效的 C 代码。该 printf 语句发生了一些奇怪的事情。我在某处做错了吗?