我需要为文件写一个可变数量的字符。例如,假设我要打印3个字符。 “TO”会将“TO”打印到文件中。 “LongString of Characters”会将“Lon”打印到文件中。
我该怎么做? (字符数在另一个变量中定义)。我知道这可能是fprintf(文件,“%10s”,字符串),但是10是预定义的
答案 0 :(得分:19)
这个对应于你的例子:
fprintf(file, "%*s", 10, string);
但你也提到了一个最大值,也限制了数字:
fprintf(file, "%*.*s", 10, 10, string);
答案 1 :(得分:1)
我相信你需要“%* s”,你需要在字符串之前将长度作为整数传递。
答案 2 :(得分:1)
作为替代方案,为什么不试试这个:
void print_limit(char *string, size_t num)
{
char c = string[num];
string[num] = 0;
fputs(string, file);
string[num] = c;
}
暂时将字符串截断为所需的长度,然后将其恢复。当然,这不是绝对必要的,但它有效,而且很容易理解。
答案 3 :(得分:0)
作为替代方案,您可以创建" c_str"从你的缓冲区和准备字符串到printf就像我在这个源中做的那样:
void print(char *val, size_t size) {
char *p = (char *)malloc(size+1); // +1 to zero char
char current;
for (int i=0; i < size; ++i) {
current = val[i];
if (current != '\0') {
p[i] = current;
} else {
p[i] = '.'; // keep in mind that \0 was replace by dot
}
p[i+1] = '\0';
}
printf("%s", p);
free(p);
}
但它解决方法错误。你应该使用格式&#34;%* s&#34;。
来使用fprintf