-1
我正在使用sprintf
來打印int
變量應該顯示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
[請參閱此討論,爲什麼不在'C'中投射'malloc()'和家族的返回值。](http://stackoverflow.com/q/605845/2173917)。 –
是的 - @ a3f有它。另外這行'tagstr [strlen(tagstr) - 1] ='\ 0';'是....錯誤...以及不必要的。另外,你的數組的初始大小還不夠大,直到大約n = 4 – LoztInSpace