我想用sql命令创建一个文件:
CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t1 VALUES(1,13153,'thirteen thousand one hundred fifty three');
INSERT INTO t1 VALUES(2,75560,'seventy five thousand five hundred sixty');
... 995 lines omitted
INSERT INTO t1 VALUES(998,66289,'sixty six thousand two hundred eighty nine');
INSERT INTO t1 VALUES(999,24322,'twenty four thousand three hundred twenty two');
INSERT INTO t1 VALUES(1000,94142,'ninety four thousand one hundred forty two');
当我使用printf时它可以工作:
printf("INSERT INTO t1 VALUES(%d, %d, '", i, nbAlea);
NombreVersMots(nbAlea);
printf("');\n");
但我不能使用fprintf:
fprintf(fichier, "INSERT INTO t1 VALUES(%d, %d, '", i, nbAlea);
fprintf(fichier, NombreVersMots(nbAlea)); // <- HERE IS MY PROBLEM
fprintf(fichier, "');\n");
我找不到使用第二行的方法。
我告诉你需要它们的程序:
char *one[]={"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
char *ten[]={"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
void pw(long n,char ch[])
{
if(n>19)
{
printf("%s %s ",ten[n/10],one[n%10]);
}
else
{
if(n) // pour eviter les espaces inutiles quand la boucle n'affiche rien
{
printf("%s ",one[n]);
}
}
if(n)
{
printf("%s",ch); // affiche 'million', 'thousand' ou 'hundred'
}
}
void NombreVersMots(long m)
{
pw((m/1000000), "million ");
pw(((m/100000)%10), "hundred ");
pw(((m/1000)%100), "thousand ");
pw(((m/100)%10), "hundred ");
pw(((m/1)%100), "");
}
非常感谢你能帮助我!
答案 0 :(得分:3)
您拨打NombreVersMots
来电pw
,致电printf
(不是fprintf
)。您可以通过将printf
中的pw
替换为fprintf
并使NombreVersMots
和pw
采用传递给{FILE*
的{{1}}参数来解决此问题。 {1}}。
答案 1 :(得分:2)
重写NombreVersMots
以使用fprintf()
,并接受FILE *
参数。然后,如果要在顶层使用printf
,请使用stdout
作为参数进行调用。即:
void pw(FILE *file, long n, char ch[])
{
...
fprintf(file, "blah");
}
void NombreVersMots(FILE *file, long m)
{
pw(file, (m/10000000), "million);
}
NombreVersMots(fichier, 42); // As before
NombreVersMots(stdout, 43); // To stdout
答案 2 :(得分:0)
问题是内部NombreVersMots(long m)
使用printf
而非fprintf
。考虑修改它(特别是pw函数)以在内部使用fprintf,也可以将输出流作为参数添加到NombreVersMots(long m)
。