プログラミングの初心者 (学校) で、これが何/なぜ起こっているのか少し混乱しています。
要素の配列を反復処理するループがあります。要素ごとに配列の整数を取得し、関数 getelementsymbol を使用してそれを char に変換し、strcat を使用して一時配列に追加します。私が抱えている問題は、一時配列の要素に先行する要素の残りが含まれていることです。これは私のコードのスニペットです。私が受け取る出力はこれです:
単語1
単語1単語2
単語1単語2単語3
char* elementsBuildWord(const int symbols[], int nbSymbols){
/* ROLE takes a list of elements' atomic numbers and allocate a new string made
of the symbols of each of these elements
PARAMETERS symbols an array of nbSymbols int which each represent the atomic number
of an element
nbSymbols symbols array's size
RETURN VALUE NULL if the array is of size <= 0
or if one of the symbols is not found by our getElementSymbol function
other the address of a newly allocated string representing the concatenation
of the names of all symbols
*/
char s1[MAX_GENERATED_WORD_LENGTH];
int y;
char *s2;
size_t i;
for (i = 0; i < nbSymbols; i++){
y = symbols[i];
s2 = getElementSymbol(y);
strcat(s1, s2);
}
printf("%s ", s1);
}