我的一段代碼片段。我的下面的功能接受來自用戶的文本。反轉整個輸入,然後嘗試將反轉字符串的ASCII表示存儲在名爲ascii_array
的數組中。但是,如代碼所示,它只接受反轉字符串的第一個字符,並增量並覆蓋ascii_array
的第一個位置。我嘗試了幾種方法來增加指針來存儲ascii_array
中的字符,但是出現錯誤。該數組應包含ASCII數組中反轉字符串的ASCII表示。C:指針和數組
例如: 輸入:你好!反向字符串
ASCII表示:elloh
預計產量: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
在括號後面加上圓括號 –
是不是'* p ++ = temporary;'而不是'* p = temporary ++;'您正在尋找的所有內容? – Dolda2000