gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 编译器的一个BUG(不是bug)

该BUG(暂且当作BUG)为string型数组bug。

当前版本截图

gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 编译器的一个BUG(不是bug)_第1张图片

使用的IDE:codeblocks 10.04

源代码:

#include <iostream>
#include <string>
#include <stdio.h>

using namespace std;



int main()
{
    string a;
    string e[10];
    int i, j;
    int k, l;
    freopen("test.txt","r",stdin);
    cin >> k;

    while(k--)
    {
        //init;
        for(i = 0; i < 10; i++)
            e[i] = "\0";

        cin >> a;
        l = a.length();
        j = 0;

        cout << "a:" << a<<endl;
        for(i = 0; i < l; i++)
        {
            if(i / 6 > j)
            {
                e[j][6] = '\0';
                j++;
                cout <<"j++"<<endl;
                cout <<"j :"<<j << endl;
            }
            e[j][i%6] = a[i];
            cout << "e[" << j << "]" << "[" << i%6 << "]:" << e[j][i%6] <<"    ";
            cout << "e[0][0]:" << e[0][0] << endl;
        }

        cout <<"devide group complete" << endl;

        for(i = 0; i< 5; i++)
        {
            cout << e[1][i];
        }
        cout << endl;
        for(i = 0; i< 5; i++)
        {
            cout << e[0][i];
        }
        cout << endl;
        for(i = 0; i <= j; i++)
        {
            cout << e[i] << endl;
        }
    }
    return 0;
}

test.txt:

5
zhangfeng
wangximing
jiujingfazi
woaibeijingtiananmen
haohaoxuexi

BUG表现为:

应输出e[0][0]不正确。


运行截图:

gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 编译器的一个BUG(不是bug)_第2张图片


已解决。string[]访问的时候更改里面的数值,如果本身没有数值,机制不完善,容易出问题。

如果使用string.insert()就不会出问题。


你可能感兴趣的:(gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 编译器的一个BUG(不是bug))