c语言-代码位置不同为什么会报错?【C语言基础问题】

问题描述

代码位置不同为什么会报错?【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来的,太老了。。。

时间: 2024-10-10 11:16:16

c语言-代码位置不同为什么会报错?【C语言基础问题】的相关文章

安卓音乐播放器-为何音乐播放器代码在esclipse中没报错,点击按钮却没有实现功能,上图上代码,求前辈们指教

问题描述 为何音乐播放器代码在esclipse中没报错,点击按钮却没有实现功能,上图上代码,求前辈们指教 Mainactivity package com.example.music; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.Broadc

框架-JAVA问题:删除数据库中数据的代码,测试不会报错,但实际什么都删不了

问题描述 JAVA问题:删除数据库中数据的代码,测试不会报错,但实际什么都删不了 这些操作做完后,数据库里的t_product表中,id=2的数据依然在,不是刷新的问题,刷新也还在 解决方案 为什么你的三个函数保存.修改.删除方法调用sql的时候都没有传递sql参数值呢? 解决方案二: 调用mapper里面的sql代码的时候,把要删除的id传进去了吗?不应该是sqlsession.delete("",参数);吗? 解决方案三: 参数没带.sqlsession.delect带上id 解决

为什么这个代码运行的时候不报错,但是对方计算机收不到消息?请问是VC++没有编译么?

问题描述 为什么这个代码运行的时候不报错,但是对方计算机收不到消息?请问是VC++没有编译么? 为什么这个代码运行的时候不报错,但是对方计算机收不到消息?请问是VC++没有编译么? 解决方案 哪里来的程序,什么代码.有没有说明文档,是不是防火墙限制了. 解决方案二: 你的代码发送的消息是否正确发送过去了,是否有收到

svn-在Myeclipse中保存代码时,SVN总是报错,已百度,答案五花八门。求指导 谢谢!

问题描述 在Myeclipse中保存代码时,SVN总是报错,已百度,答案五花八门.求指导 谢谢! 写完一段代码按保存(CTRL+S)时 总是报这样的错误 解决方案 http://zhidao.baidu.com/link?url=gLO2oBMgYsBRCUQVbUzkuWP3geLbG-_cBa6bdDSnxrVNkrNp8rnli7U0mGz-6SW2_qccL6tVVNPepFEaoCfIu6rApe2lVmVFlKGBAbDlCJ_ http://zhidao.baidu.com/lin

javascript-下面是一个html和js实现的wheel移动到目的位置,但是浏览器报错,错误应该在指定行,

问题描述 下面是一个html和js实现的wheel移动到目的位置,但是浏览器报错,错误应该在指定行, <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus?"> <meta name="Author&

c++-在codeblocks上成功编译的代码放到VS2010上各种报错急求解决

问题描述 在codeblocks上成功编译的代码放到VS2010上各种报错急求解决 代码在网盘里,求大神解决谢谢了http://pan.baidu.com/s/1hqeUza8 解决方案 哥们你不厚道啊,container.h呢,发全了啊. 解决方案二: 我改好了,文件怎么给你?

vc6-初学者提问,为什么这段代码在VC6.0上会报错

问题描述 初学者提问,为什么这段代码在VC6.0上会报错 #include #include main() {int s; float n , t , pi; t = 1.0; pi = 0; n = 1.0; s = 1; while( fabs(t) >= 1e - 6) { pi = pi + t; n += 2.0; s = -s; t = s/n; } pi = pi*4; printf("pi = %fn", pi) } 就是这段代码,我个人看也觉得没什么错误,可就是

c语言-关于extern char *arr[];编译报错的问题

问题描述 关于extern char *arr[];编译报错的问题 #include #include extern char *arr[];//在这行报错 int main(){ int i=0; while(arr[i++]) printf("%sn",arr[i]); system ("pause"); return 0; } 用VS2010编译这段代码时报错: IntelliSense: 不允许使用返回数组的函数 解决方案 通过论坛求助,编译已不再报错,以下

如何将C语言代码转换为应用程序(也就是编译)_C 语言

C语言是高级语言,它的语法接近于人类的自然语言,但比自然语言严谨.计算机无法直接将C语言的代码运行,他们并不懂得什么是C语言,实际上,计算机只处理他们的机器语言,所以我们必须为自己找一个翻译,这个翻译可分为2种: 1.编译器 编译器是"文章的译者",它在我们完成创作后将其翻译(实际上是编译)成为机器语言. 2.解释器 解释器是"随声翻译",代码运行的同时它们就开始工作,BASIC就是使用解释器,一般认为这种方法效率很低. C语言要请第1种翻译,要想让C语言代码执行,