Tôi có thêm hai ký tự được thêm vào đầu chuỗi và tôi dường như không thể tìm hiểu lý do. Các ký tự thậm chí không xuất hiện trong mã. Tôi đang thua lỗ ở đây. Đây là mã của tôi:Ký tự bổ sung được thêm vào đầu chuỗi?
#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;
}
Đối với một số lý do, mã sản xuất này:
Enter characters: gggg
Input: PEgggg
Khi nó nên được sản xuất này:
Enter characters: gggg
Input: gggg
'input' trỏ tới điều gì? – immibis
Lưu ý phụ: vì 'chars' là một biến toàn cầu, không có điểm trong' các ký tự trả về '; –
@barakmanos nó sẽ là tốt hơn để loại bỏ các biến toàn cầu và có nó địa phương để 'vector' –