Ein Ausschnitt aus einem Stück meines Codes. Meine Funktion unten akzeptiert Text vom Benutzer. Kehrt die gesamte Eingabe um und versucht dann, die ASCII-Darstellung der umgekehrten Zeichenfolge in einem Array namens ascii_array
zu speichern. Wenn der Code jedoch steht, akzeptiert er nur das erste Zeichen der umgekehrten Zeichenfolge, erhöht und überschreibt die erste Position der ascii_array
. Ich habe mehrere Möglichkeiten versucht, um den Zeiger zu erhöhen, um die Zeichen in ascii_array
zu speichern, aber ich erhalte einen Fehler. Das Array sollte die ASCII-Darstellung der umgekehrten Zeichenfolge im ASCII-Array enthalten.C: Zeiger und Array
Beispiel: Eingabe: Hallo!
Ascii Darstellung des umgekehrten String: elloh
Erwartete Ausgabe: 33 111 108 108 101 104
Ausgang I erhalten: 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;
}
Bitte geben Sie eine [mcve]. Geben Sie auch die genaue Eingabe, die erwartete Ausgabe und die tatsächliche Ausgabe an. – kaylum
Setzen Sie Klammern um post op ppinter Inkremente –
Ist nicht '* p ++ = temporäre;' statt '* p = temporäre ++;' alles, was Sie suchen? – Dolda2000