0
#include<iostream>
#include<fstream>
#include<cctype>
#include<string>
using namespace std;

int main(){
    ifstream fin;
    int i,size,j=8,t=0;
    char kunci[21]="TFFTFFTTTTFFTFTFTFTT";
    string data;
    fin.open("datajawaban.txt");
    //getline(fin,data);
    char jawab[31];
    cout <<"ini isi file " <<data<<endl;
    for(i=0;i<=31;i++){
       fin >> jawab[i];
       jawab[31] = '/0';
       if(jawab[j]==kunci[i])t++;
       cout <<"data ke "<<i <<" "<< jawab[j] << " - " <<kunci[i]<<endl;     
       j++;
    }
    cout << "jumlah benar "<< t;
    fin.close();   
    system("pause");
    return 0;
}

那是我的代码

输出为±

± ` ( v

☺</p>

p ↨ v

P☺v

-

0 \ ± C

P☺v

这是错误的输出,我的代码有什么问题?

这次请帮帮我,这是我的作业

4

1 回答 1

3

jawab[31] = '/0';未定义的行为,因为数组大小为 31,数组索引从 0 开始,最大索引值可以是 size - 1,即jawab数组的 30。

不仅您的for循环运行 for i<=31;,而且您i在循环kunci[i]中为 i > 19 建立索引,这是数组超出索引错误的另一个点。-- 只需声明足够大的数组来纠正这两个错误。

于 2013-09-14T21:54:52.170 回答