开发者社区> 问答> 正文

代码位置不同为什么会报错?【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]) != '\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)

展开
收起
爱吃鱼的程序员 2020-06-23 20:41:35 675 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    c89标准:
    c语言局部变量声明只能在函数最前面
    c99:
    此限制取消
    VS对c的标准支持不好,换gcc编译器或者把文件改成cpp

    我两边都不报错,你再把代码检查一下是不是打错了,或者clean一遍。

    变量声明必须在当然程序块的前面,也就是大括号所包含的块最开始

    还是不明白,请大神解释一下==

    C语言变量声明位于函数或过程的开始位置,即你得先说明你有哪些变量,才能开始执行操作

    变量的声明在C中是必须要放在最前面的,我知道的JAVA和C++没有这个要求

    我的编译没问题,应该是你的编译器按C89来的,太老了。。。

    2020-06-23 20:41:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《0代码搭应用》 立即下载
不止代码 立即下载
低代码开发师(初级)实战教程 立即下载