私はsprintf
を使用しての1^2+2^2+3^2+4^2+5^2+6^2
を表示する変数を表示しています。しかし、私のコードは1^2+6^2
しか印刷しません。私はなぜ中間部分が欠落しているのか分かりません。Cプログラミングのsprinfの問題
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* formatSeries(int n)
{
char *tagstr = (char *)malloc(sizeof(char)*n*n);
int pos = 0 ;
int k;
for (k = 1; k <= n; k++)
{
pos = sprintf(&tagstr[pos], "%d^2+", k);
}
tagstr[strlen(tagstr) - 1] = '\0';
return tagstr;
}
void main()
{
int n = 6;
printf("%s \n", formatSeries(n));
}
s/'pos = sprintf' /' pos + = sprintf'? – a3f
['malloc()'と 'C 'のファミリの戻り値をキャストしない理由についてのこのディスカッションを参照してください。](http://stackoverflow.com/q/605845/2173917)。 –
Yep - @ a3fはそれを持っています。また、この行 'tagstr [strlen(tagstr) - 1] = '\ 0';は....間違っているだけでなく不要です。また、あなたの配列の初期サイズは約n = 4まで十分に大きくない – LoztInSpace