whileLTestStr.exeで0x008F1D0Dでスローされた例外:0xC0000005:0x00770000のアクセス違反を書き込むアクセス違反。例外がスローされました:アクセス違反の書き込み
このエラーは、あるアレイの1文字を別の配列に配置しようとしたときに発生します。
文字列を入力した直後にエラーが発生し、プログラムを終了せず、単に「一時停止」します。
#include "stdafx.h"
#include <iostream>
#include <cstring>
int main()
{
using namespace std;
char test[20];
char result[20];
int i = 0;
cout << "Enter a string without symbolic characters: ";
cin.get(test, 20);
for (i; (test[i] != '?' || test[i] != '\0'); i++)
{
result[i] = test[i]; //Exception gets thrown here
}
if (strcmp(result, test) != 0)
{
cout << "Fail.";
}
else
{
cout << result << endl;
cout << "Success.";
}
return 0;
}
ここでは、例外がスローされた箇所をコメントで示しています。
このプログラムは、ユーザが入力できるものだけをテストするためのものです。しかし、なぜこれがうまくいかないのか分かりません。
などがあり、私のためにこれを行うには、いくつかの機能は、おそらくですが、私は、ループで何ができるか、私はまだ言語を学んでいる、と私はしようとテストにだけ興味
EDIT
提案の後、私はAND演算子のOR演算子を変更しましたが、エラーは発生しなくなりました。しかし、私は本当に奇妙な行動を取る。
これはC++で、std :: stringを使用します。 –
@ manni66文字列の各文字を見て、ここでやったことをどうやって行うのか知っている言語にはまだ達していませんが、私はあなたのポイントを得ます –
文字列の各文字を正確にあなたはそれを行う。そして文字列はsize()を持っているので、forループでそれを使うことができます。 –