Ich habe zwei zusätzliche Zeichen am Anfang meiner Zeichenfolge hinzugefügt und ich kann nicht herausfinden, warum. Die Zeichen erscheinen nicht einmal im Code. Ich bin hier ratlos. Dies ist mein Code:Zusätzliche Zeichen am Anfang der Zeichenfolge hinzugefügt?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char *chars;
char* vector(char input, char *newlist);
int main(){
char *input, *out = "Input: ";
printf("Enter characters: ");
while(1){
char i = getchar(); //get input
if(i == '\n'){
break; //detect a return key
} else{
input = vector(i, input); //call vector
}
}
char * print = (char *)malloc(1 + strlen(input) + strlen(out));
strcpy(print, out); //concat the strings
strcat(print, input);
printf("\n%s", print); //print array
free(print);
free(input);
free(chars);
return 0; //exit
}
char* vector(char in, char *newlist){
int length = strlen(newlist); //determine length of newlist(input)
chars = (char*)calloc(length+2, sizeof(char)); //allocate more memory
strcpy(chars, newlist); //copy the array to chars
chars[length] = in; //appened new character
chars[length + 1] = '\0'; //append end character
return chars;
}
Aus irgendeinem Grund erzeugt der Code folgendermaßen aus:
Enter characters: gggg
Input: PEgggg
Wenn es diese produzieren sollte:
Enter characters: gggg
Input: gggg
Was bedeutet 'input'? – immibis
Seitennotiz: da 'chars' eine globale Variable ist, gibt es keinen 'return chars;'. –
@barakmanos wäre es besser, die globale Variable zu entfernen und es lokal zu haben "vector" –