"%-9s"有什么作用?

Abh*_*kur 2 c format-specifiers

我正在开发一个C项目,现在使用开源方法集成到我的代码中.在浏览代码时,我遇到了一个类似这样的printf语句:

printf("%-9s",someString);
Run Code Online (Sandbox Code Playgroud)

我理解格式说明符%s但是什么是%9s

我试图寻找解决方案,但没有成功.任何帮助都会有用.

Gan*_*har 9

printf("%-9s",someString);  
Run Code Online (Sandbox Code Playgroud)

9是场宽.如果你传递字符串Hi,这将打印Hi七个空格.

如果你传递字符串Hai,这将打印Hai六个空格.

- 说左对齐.

编辑

这些代码行解释得更多.

 printf("\n%-9s%s", "Hello", "World!");  // left align,   Here "Hello" is five characters, because of width -9, prints 4 more spaces after Hello  

 printf("\n%9s%s", "Hello", "World!");   // right align,  because of width 9, prints 4 more spaces before Hello  
 printf("\n%+9s%s", "Hello", "World!");  // right align,  because of width 9, prints 4 more spaces before Hello.   
Run Code Online (Sandbox Code Playgroud)

所有上述情况下字段宽度"Hello"仅用于"World!"字符串而不是字符串,这通常打印.

产量

Hello    World!
    HelloWorld!
    HelloWorld!
Run Code Online (Sandbox Code Playgroud)