私のコードを抜粋したスニペット。以下の私の関数は、ユーザーからのテキストを受け入れます。入力全体を逆順にして、反転した文字列のASCII表現をascii_array
という配列に格納しようとします。しかし、コードが反転した文字列の最初の文字を受け入れるだけなので、ascii_array
の最初の位置をインクリメントして上書きします。私はascii_array
に文字を格納するポインタを増やすいくつかの方法を試しましたが、エラーが発生します。配列には、ASCII配列の反転文字列のASCII表現が含まれている必要があります。C:ポインタと配列
例: 入力:hello!
逆に、文字列のASCII表現:!33 111 108 108 101 104
私が手出力:33
#include<string.h>
#include<stdio.h>
void encrypt(char inputText[], int inputLength);
int main(void)
{
char word[512];
int length;
printf("Enter word: ");
fgets(word,512,stdin);
length = strlen(word);
encrypt(word,length);
return 0;
}
void encrypt(char inputText[], int inputLength)
{
printf("%s\n",inputText);
char *begin = inputText;
char *end = inputText + inputLength - 1;
char temp;
while(end > begin)
{
temp = *end;
*end-- = *begin;
*begin++ = temp;
}
char *ascii_pointer;
char temporary;
ascii_pointer = inputText + 1;
temporary = *ascii_pointer;
int *p;
int array[512];
p = array;
while(ascii_pointer < inputText + inputLength)
{
printf("INPUTTEXT: ascii_pointer: %s\n " , ascii_pointer);
temporary = *ascii_pointer++;
printf("temporary: %c\n " , temporary);
*p = temporary++;
// I think my logic is incorrect fron this point.
//*p++ = temporary++;
//*p++;
printf("asci_pointer: %c\n " ,*p);
printf("ascii_array: %d\n ", *array);
printf("\n");
}
printf("\n");
printf("END: %p:%c\n", p, *p);
printf("END--- MAYBE GARBAGE VALUE: place holder: %c\n ",temporary);
printf("END: ascii_array: %d\n ", *array);
return;
}
[mcve]を入力してください。また、正確な入力、期待される出力、実際の出力を提供する。 – kaylum
post pp pp単位の前後に括弧を入れてください –
'* p = temporary ++;ではなく、' * p ++ = temporary; 'ではありませんか? – Dolda2000