我对C知之甚少,但我正在努力理解用它编写的程序.
我遇到过这一行,但我不确定这意味着什么:
fprintf(kinsh.fp, "%-.*lg", ndigits, kins[i+j*n]);
Run Code Online (Sandbox Code Playgroud)
我认为这意味着"将带有ndigits小数位或有效数字(以较短者为准)的数字打印到kinsh(这是一个文件).但是,我不知道哪个kins,这是一个数组,正在那里做.
我有没有误解-在上下文中,它会如果线路是从阅读更有意义kinsh和写入金穗卡?
a_p*_*han 10
fprintf函数定义如下:
int fprintf ( FILE * stream, const char * format, ... );
Run Code Online (Sandbox Code Playgroud)
所以,kinsh.fp是FILE指针.现在格式字符串"%-.*lg"是一个C格式的字符串,它意味着:
-意味着左对齐.意味着精确度.*意味着精度不是硬编码的,而是作为参数提供的,该参数是格式字符串之后的第一个参数ndigits.lg会由C99编译器被视为double,Lg是长期双.(正如@mafso在评论中所提到的,lg是C89中的未定义行为)kins[i+j*n].编辑
什么是不:语句写入long double存储在值kins[i+j*n],具有ndigits精度和左对齐,通过指出文件中kinsh.fp.
一般格式字符串格式为: %[parameter][flags][width][.precision][length]type