したがって、「文字列」の配列へのポインタを受け取る関数があります(文字列は、「\ 0」が後に続く単なるメモリのブロックとして理解されます)。文字列はすでに文字列の最初のバイトへのポインタであるため、私のポインタは実際には**doublePointerです。しかし、私は陰陽を分断しているので、正直なところ、低レベルのビューで何が起こっているのかわかりません。以下の私のコードは次のとおりです。その機能は、文字を読み取り、最初の単語の最初の文字(文字列内)とピリオドの後を大文字にすることです。
void autocaps(char ** words)
{
/* Add code here */
//Period Boolean
bool next=false;
//First Word Boolean
bool fcap=true;
//Counter Variable
int i=0;
int j=0;
//Second Pointer
char** wordx = words;
//LowerCase Bomb & Period Flagging
while(wordx[i][j]!='\0'){
while(wordx[i][j]!='\0'){
//A-Z Filter
if((wordx[i][j]>='A')&&(wordx[i][j]<='Z')){
wordx[i][j]+=32;
}
if(wordx[i][j]=='.'){
next=true;
}
j++;
}
i++;
}
i=0;
j=0;
//Cap First Word & Cap Post Period
while(words[i]!='\0'){
while(words[i][j]!='\0'){
//a-z Filter
if((words[i][j]>=97)&&(words[i][j]<=122)){
if(fcap){
words[i][j]-=32;
fcap=false;
}
if(next){
words[i][j]-=32;
}
}
j++;
}
i++;
}
return;
}
パラメータを介して渡された元のポインタを印刷しているときに、セグメント障害が発生しています。私がとても混乱しているので、誰かが私にこれの低レベルの概念を説明することができれば、私はいたるところに3つ星と4つ星を投げています、そしてそれが私のコードのデバッグに近づいたり遠ざかったりするかどうかさえわかりません。
ありがとうございました!!