问题描述
- 代码位置不同为什么会报错?【C语言基础问题】
-
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]) != ''; 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 Studiomine25.c(9) : error C2143: syntax error : missing ';' before 'type'
F:Microsoft Visual Studiomine25.c(11) : error C2065: 'i' : undeclared identifier
F:Microsoft Visual Studiomine25.c(13) : error C2065: 'word' : undeclared identifier
F:Microsoft Visual Studiomine25.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来的,太老了。。。