gets()语句放在第8行会报错,第10行就不会报错,菜鸟不明白是怎么回事了,求解。
代码如下:
# include <stdio.h>
# include <string.h>
int main()
{
char string[100];
char c;
gets(string);
int i, num = 0, word = 0;
//gets(string);
for(i = 0; (c = string[i]) != '\0'; i++)
{
if(c == ' ') word = 0;
else if(word == 0)
{
word = 1;
num++;
}
}
printf("%d", num);
return 0;
}
报错提示如下:
--------------------Configuration: 25 - Win32 Debug--------------------
Compiling...
25.c
F:\Microsoft Visual Studio\mine\25.c(9) : error C2143: syntax error : missing ';' before 'type'
F:\Microsoft Visual Studio\mine\25.c(11) : error C2065: 'i' : undeclared identifier
F:\Microsoft Visual Studio\mine\25.c(13) : error C2065: 'word' : undeclared identifier
F:\Microsoft Visual Studio\mine\25.c(17) : error C2065: 'num' : undeclared identifier
执行 cl.exe 时出错.
25.obj - 1 error(s), 0 warning(s)
c89标准:
c语言局部变量声明只能在函数最前面
c99:
此限制取消
VS对c的标准支持不好,换gcc编译器或者把文件改成cpp
我两边都不报错,你再把代码检查一下是不是打错了,或者clean一遍。
变量声明必须在当然程序块的前面,也就是大括号所包含的块最开始
还是不明白,请大神解释一下==
C语言变量声明位于函数或过程的开始位置,即你得先说明你有哪些变量,才能开始执行操作
变量的声明在C中是必须要放在最前面的,我知道的JAVA和C++没有这个要求
我的编译没问题,应该是你的编译器按C89来的,太老了。。。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。