#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
☺
点 ↨ v
点 ☺ v
-
0 \ ± ç
点 ☺ v
输出错误,我的代码有什么问题?
这次请帮助我,这是我的作业
答案 0 :(得分:3)
jawab[31] = '/0';
为undefined behaviour,因为数组大小为31,数组索引以0开头,最大索引值可以为1,jawab
数组为30。
不仅for
循环针对i<=31;
运行,您在i
循环kunci[i]
索引i&gt; 19这是索引bug的另一个数组点。 - 只需声明足够大的数组来纠正这两个错误。