在使用read读取数据时,下标异常 5C
    int j = 0;
        QVecter<RAW>PingHeader;
    char *Navigation_strings;
        infile.read((char*)&Navigation_strings,PingHeader[j].navigation_strings_size);

        char *Attitude_strings;
        infile.read((char*)&Attitude_strings,PingHeader[j].attitude_strings_size);

        char *Heading_strings;
        infile.read((char*)&Heading_strings,PingHeader[j].heading_strings_size);
        在调试时发现,运行到第二个infile.read是j的值会变化,j会变成一个很多大的数,不知道怎么处理,求帮助

3个回答

volatile int j=0; 试一下看看

qq_33460068
qq_33460068 不行,j还是在变化
大约 2 年之前 回复

const int j=0;

qq_33460068
qq_33460068 不行,我我这只是给出了一个循环,下个循环j要加一,不能const
大约 2 年之前 回复

如果不想j值发生变化,在定义j的是用fianl修饰

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java之Socket上的Read操作阻塞问题
从Socket上读取对端发过来的数据一般有两种方法: 1)按照字节流读取 [java] view plain copy BufferedInputStream in = new BufferedInputStream(socket.getInputStream());   int r = -1;   List l = new LinkedL
Fortran从文件读入数据的规律
从今天开始,把自己在Fortran编程过程中的心得写成系列博客,提醒自己的同时也希望能帮助freshman更快地入门Fortran。 REAL Q(28) READ(11,*) Q 比如READ(11,*) Q,这个输入语句会将编号为11的文件中第一行前28个数据,按从左至右的顺序依次赋给数组Q。 若想按列读入数据,则需使用循环语句。Fortran中默认一条READ或者W
谨慎使用SocketChannel的read方法
下面的代码是一个实例化SocketChannel的过程: SocketChannel channel = SocketChannel.open(); //要设置连接超时 channel.socket().connect(addr,connectionTimeOut_ms); //设置读超时 channel.socket().setSoTimeout(timeou
SqlDataReader 读取记录时遇到的问题
今天在用SqlDataReader 读取记录时,出现了如下提示:Invalid attempt to read when no data is present. 出现错误点:Response.Write(dr.GetValue(1).ToString() + "");原因是在执行这条语句前未用:dr.Read()参考资料:    存储过程在数据库开发中非常有用,而在开发ASP.NE
boost::asio::read_until数据获取重复问题
利用boost::asio::read_until读http的chunk包,读取部分代码如下:第一部分读取包头,第二部分循环读chunk包如果不调用consume清空的话,while循环里一直获取到的是包头部分的内容,consume的官方文档解析如下:测试代码运行结果如下:虽然调用了consume,但是boost::asio::buffer_cast&amp;lt;const char*&amp;gt;(sb.d...
read( )函数注意事项与不足
今天在练习使用dup文件描述符重定向时,从标准输入流读取数据时同时练习了read()函数和fgets()函数,因为以前没有过多使用过read()函数,所以出现了一想不到的错误,刚开始调了半天才发现是read()函数的错误。为了防止以后有不熟悉read()函数的同学在使用过程中再出错,所以今天我们来解析一下read()函数。如有不足的地方请大家指出。 先说出结果吧:个人觉得循环中最好不要用read
当数组访问超出下标
对于一个数组,当访问越界时,无论是读还是写都产生不可预期的结果。 但是对超界部分读时,结果虽然不可预期,但是程序却不会出现异常。 对越界部分进行写操作时就会出现异常。 #include #include using namespace std; int main(){ shared_ptr smartPtr(new int[10]); for (int i = 0; i < 10; i
vector容器的大坑:对vector容器使用下标索引进行访问的时候程序崩溃!!!
程序中首次对一个vector对象进行下标索引赋值运算,即使该vector已经在构造函数中完成了初始化,但是使用下标访问它,对它赋值仍然导致程序崩溃,提示访问了未初始化的对象或提示指针越界! 实际上,首次对空的vector进行增加元素,必须使用push_back(),如果对空的vector使用下标的方式来增加元素,将会导致程序崩溃! 要么使用push_back() 要么在对空vector使用下...
Jedis “Socket读取超时”导致“返回值类型错误”
从异常信息来看,首先是在'zadd'操作时出现"Socket读取超时异常",具体异常信息"JedisConnectionException: java.net.SocketTimeoutException: Read timed out"。 出现异常后,会销毁这个阻塞的Jedis连接池对象(CustomShardedJedisPool.returnBrokenResource(Custo
Pandas.read_csv() 函数数据读取问题
pandas.read_csv()函数是能够读取所有使用逗号分隔开的文件,所有哦。开始使用pandas.read_csv()函数的时候出现了这样的问题:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb1 in position 0: invalid start byte其实这句话上面还有很多路径:如图(不知道怎么传图,直接拖进来的......
DatainputStream的read方法读取问题、类型 String 的问题
问题1:如何解决socket中如何处理DatainputStream的read方法读取堵塞?如果没有长时间数据进来如何让线程运行结束呢?大家看下代码哦,然后说下如何处理呢? 代码如下: Socket 的 setSoTimeout() 方法必须在接收数据之前执行才有效. 此外, 当输入流的 read()方法抛出 SocketTimeoutException 后, Socket 仍然是连接的, 可
Socket通讯读取数据阻塞解决方案
一、问题描述 while ((len = in.read(bytes)) != -1) { os.write(bytes, 0, len); os.flush(); } 1.read方法读取文件数据时读取到文件末尾返回-1. 2.在socket通讯过程从InputStream输入流中读取数据时如果没有数据可读会一直阻塞,如果关闭流会返回-1。 Socke
从SocketChannel读取数据
SocketChannel的读取方式也比较特殊,请看代码。可以直接在ByteBuffer里面操作。也可以转化为byte[]再转为中文Stringpackage net.java2000.nio;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio
android socket readline()方法读不到值的问题
在一次socket编码中,我从客户端发送一条数据到服务器, 可是在服务器我用readline()方法没取到值,也没报错。 于是我把可能发生错误的代码用输出语句包裹,到readline这一行的时候停止的编译, 我意识到是读取的时候出了问题 BufferedReader的readLine方法是一次读一行的,这个方法是阻塞的, 直到它读到了一行数据为止程
解决InputStream中数据读取不完整问题
如果你要看这篇文章,希望你对inputStream流的读取已经有所了解。
Spring+Hibernate进行单元测试时出现read-only mode错误
Spring+Hibernate进行单元测试时出现read-only mode错误
win7 异步socket发生问题
在定时任务线程中,使用异步socket作为client,  EndConnect成功,但是取得RemoteEndPoint时候发生 SocketException:     Exception: 系统检测到在一个调用中尝试使用指针参数时的无效指针地址。   从Server端看到的是:     10053(WSAECONNABORTED):    无法从传输连接中读取数据: 您的主机中的
Java中Socket上的Read操作阻塞问题
从Socket上读取对端发过来的数据调用read()和readLine()。 这两个方法都会读取对端发送过来的数据,如果无数据可读,就会阻塞直到有数据可读。或者到达流的末尾,这个时候分别返回-1和null。 这个特性使得编程非常方便也很高效。 但是这样也有一个问题,就是如何让程序从这两个方法的阻塞调用中返回。
注意在使用ArrayList进行for循环遍历的时候不能直接移除下标
public static void main(String[] args) { List<String> strings = new ArrayList<>(); for (int i = 0; i < 10; i++) { strings.add("1"); } for (String s : strings
C语言编译器不检查数组下标越界 困扰的很长时间
C语言的编译器是不检查下标越界的,以前知道这个问题,可是没有想过是什么原因?  总结如下:   1,不检查下标是否越界可以有效提高程序运行的效率,因为如果你检查,那么编译器必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界,这就会导致程序的运行速度下降,所以为了程序的运行效率,C/C++才不检查下标是否越界。   2,不检查下标是为了给程序员更大的空间,也为指针操作带来更
ArrayList并发add()可能出现数组下标越界异常 | 10+10<20
ArrayList内部,add()分两步操作,step1检查array容量,step2塞值并将size+1。 假设有2个线程操作同一个ArrayList,且array的容量刚好还可以存一个值。Thread1执行add()的step1后被挂起,这时Thread1“认为”array还有位置可以塞值,然后安心地睡去了;Thread2执行add(),存入一个元素并将size+1,而+1后的size已经大
读Socket流时产生阻塞的解决方案
在用socket写一个服务器时遇到了问题于是将主要的问题抽了出来,代码如下,由于代码很简单于是也没有注释。public class Main { private static ServerSocket serverSocket; private final static ExecutorService exec = Executors.newFixedThreadPool(30);
SerialPort Read读取数据出问题
刚才在用SerialPort 的Read读取串口数据时,正常情况是读出“AAAA06FA0203011111”类似数据,但是读取后发现无论怎么读总是读一串0出来, 折腾半天,添加上ReadTimeOut事件后,读取出AA0……后面又是一大串的0 实在坑爹,纠结半天,发现原来是串口返回数据需要一定时间,因此,在对串口发送查询指令后,不能立即就去读取数据,需要一段时间的缓冲与等待。 采用了最简单
使用apache的poi遇到的异常收集
1. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject at excel.ReadExcelHandle.readExceed2007(ReadExcelHandle.java:107) at excel.ReadExcelHandle.main(ReadExcel
下标越界的解决方法
如果使用数组时,数组的下标超出数组的可取值范围就会出现这个错误,这个数组可以是自定义的也可以是系统自带的。 1.自定义数组: dim arr1(1 to 5) arr1(10)=555 因为arr1数组为1到5,这里却是10,所以就会报下标越界错误。 2.系统自带的数组: 一个excel工作表表有3张Sheet Sub 下标越界()   MsgBox Sheets(4).N
Linux下串口编程遇 接收数据错误问题及原因
近日在调试串口的时候发现,另一设备向我ARM板的串口发送0x0d,我接收之后变成了0x0a,这是问题一;另外当对方向我发送一串数据,如果其中有0x11,那么我总是漏收此数,这是问题二。 由于问题莫名其妙,以为是笔记本的USB转232线缆的问题,换,问题依旧。 以为是对方设备的问题,采用串口调试助手模拟通讯设备与ARM板通讯,问题依旧。 无奈才去查看资料,最终得以解决,现总结如下:
ServletInputStream的重复读取(多次读取)
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://github.com/jiangxincode 知乎地址: https://www.zhihu.com/people/jiangxinnju 在使用Servlet进行Web开发的时候,有时
一个与map下标操作有关的编译错误(花了5分钟才找到原因)
来, 看程序: #include #include #include using namespace std; class A { public: map m_map; }; void test(const A &a) { string s = a.m_map["hello"]; cout << s << endl; } int main() { A a; a.m_map
【串口通信】——把你的Read事件写“活”了
上篇博客中,给大家介绍了在串口通信中的线程应用,解决接收数据的问题。但是在最后给大家提了3个问题。今天就给大家介绍一下第一个问题的处理方法,也就是——如果返回的数据的数据长度不同,如何写Read方法中的循环来读取完整的返回数据。          当然如果您没有看我的上篇博客,这里我再单独把read方法写一下: Private Sub Read()   Try   serialPort
SqlDataReader的关闭问题,报错:“阅读器关闭时尝试调用 HasRows 无效”
最近在练习一个ADO.NET三层架构验证用户名登录密码时出现报错:“阅读器关闭时尝试调用 HasRows 无效” 百度了好多文章才得到解决: 先来看SqlHelper获取SqlDataReader public static SqlDataReader ExecuteDataReader(string sql, params SqlParameter[] Parameters) { SqlC
当字符串数组String[]为空时,通过下标访问时会越界,空指针异常
重写了request.getParameter()方法, public String getParameter(String name) { Map map = getParameterMap(); if (name == null) { return null; } String[] st = map.get(name); return st[0]; } 没有对
read()从二进制文件读取指定记录号的数据
#include #include using namespace std; int main() {  int i=0,a[10]; // int a[10]={0}; //for(int i=0;i<9;i++) //{ //a[i+1]=a[i]*20+i+1; //cout<<a[i]<<endl; //} //ofstream rs1("ok2002com.txt
InputStream读取数据问题
1. 关于InputStream.read()      在从数据流里读取数据时,为图简单,经常用InputStream.read()方法。这个方法是从流里每次只读取读取一个字节,效率会非常低。     更好的方法是用InputStream.read(byte[] b)或者InputStream.read(byte[] b,int off,int len)方法,一次读取多个字节。 2.
Socket的读取超时与连接超时
setSoTimeout(int timeout);  设置客户端读取
RST及java socket关闭后读写的各种异常
RST及java socket关闭后读写的各种异常RST及java socket关闭后读写的各种异常1. RST (Reset)2. 对已关闭socket读写会产生的异常2.1 主动关闭方2.2 被动关闭方被FIN关闭被RST关闭重点在于:3. 怎么避免意外的RST?参考资料1. RST (Reset)TCP连接的断开有两种方式:连接正常关闭时双方会发送FIN,经历4次挥手过程;通过RST包异常退...
ajax回调函数使用this异常
在ajax请求后使用$(this)抛出 Uncaught TypeError: Cannot read property 'createDocumentFragment' of undefined 异常,原因是此时的this并不DOM对象,可以使用ajax上下文,或者传递引用的方法解决。 function editTable(url,obj){ var oldValue = obj.t
Android -- 小问题 InputStream的read方法读取字节不完全的问题
关于InputStream.read(byte[] b)和InputStream.read(byte[] b,int off,int len)这两个方法都是用来从流里读取多个字节的,有经验的程序员就会发现,这两个方法经常 读取不到自己想要读取的个数的字节。比如第一个方法,程序员往往希望程序能读取到b.length个字节,而实际情况是,系统往往读取不了这么多。仔细阅读Java的API说明就发现了,这
解决InputStream.read读取数据出现丢失的情况
InputStream.read(byte[] b)InputStream.read(byte[] b,int off,int len)这两者都可批量读取数据,进入byte[]缓存。但是即便是实现给定好byte[]的长度,指定长度进行读取,也不一定能完全读取数据。这里的做法可用以下:                byte[] bodyReceived = new byte[dataLen]; ...
php分页设计
使用php设计网站时,读取数据要采用分页技术。
SqlDataReader读取空值字段,会抛异常的问题
测试环境:VS2010Update1   C#  .Net Framework4 //SqlDataReader reader //int groupNum; //int?类型转int类型的示例代码。 //下面表达式??表示,若expre
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池