C ++で簡単なポインタコードを記述しましたが、「str」の周りにスタック破損のランタイムエラーが発生します。配列内の割り当てられていない場所に到達しようとするとこのエラーが発生することはわかっていますが、この場合、ポインタが「\0」に到達するとwhileが停止します。それは、ptrがメモリ内で前進し続け、「\ 0」を指している可能性がありますか?前もって感謝します!:-)
コードは次のとおりです。
#include <iostream>
using namespace std;
#define SIZE 5
void CHANGE(char str[]);
void CHANGE(char str[])
{
char *ptr=str;
while(*ptr!='\0')
{
if( ( (*ptr>='a')&&(*ptr<='z') )|| ( (*ptr>='A')&&(*ptr<='Z') ) )
{
if(*ptr=='z')
*ptr='a';
else if(*ptr=='Z')
*ptr='A';
else
(*ptr)++;
}
ptr++;
}
}
void main()
{
char str[SIZE];
cout<<"please enter a sring\n";
cin>>str;
CHANGE(str);
cout<<str<<"\n";
}