C %m.ns 输出
#include <stdio.h>
#define N 19
int main()
{
int i;
for (i=0;i<=N;i++)
{
printf("%*.*s%-*.*s\n",N,i<=N/2?i:N-1,"*******************",\
N,i<=N/2?i+1:N-i+1,"*******************");
}
return 0;
}
%m.ns中间的m.n是对%s的修饰符,
m表示字符串显示时的最大宽度,超过的会被截掉,
n表示显示字符串中的几个字符,
如果n<m,则数据靠右对齐显示
%-m.ns,其它和上面一样,只是靠左对齐
%*.*s 两个星号类似通配符,它的实际值由后面的参数决定
如printf("%*.*s",m,n,"********")就等价于%m.ns
现在这段好理解了
printf("%*.*s%-*.*s\n",N,i<=N/2?i:N-i,"*******************",N,i<=N/2?i+1:N-i+1,"*******************");
将屏幕分成19+19两半,前面一半由%*.*s控制,后面一半由%-*.*s控制
当 i<=N/2时,每行输出 i+(i+1)=2i+1 个星号
当 i>N/2 时,每行输出 (N-i)+(N-i+1)=2(N-i)+1 个星号
转自 :http://www.oldlinux.org/oldlinux/viewthread.php?tid=9962&extra=page%3D2
相关文档:
今天完成了嵌入式linux的第一个驱动的编写和测试,虽然是个简单的程序,但是麻雀虽小,五脏俱全,希望可以给刚开始接触驱动编写的人一些提示,共同进步。
源代码:
分析如下:
下面是我的驱动程序:
#include <linux/config.h>//配置头文件
#include <linux/kernel.h&g ......
曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明。
我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的&ld ......
extern "C" 详解
在C++中,为了支持重载机制,在编译生成汇编代码时,函数的名字要加入函数的参数类型或者返回值类型等信息
在C中,因没有重载机制,编译后的代码只是简单的函数名字而已,不加入其他的信息
1. 不加入extern "C"
testexternc.cpp
int mytest(void)
{
int a=10,b=20;
int c=a+b;
ret ......
C是面向过程的程序设计,程序=数据结构+算法 [最原始,但编个程确实不易]
C++是面向对象的程序设计,程序=多个类+消息(类=数据结+算法)[比较容易上手]
C# 是纯面向对象的语言[更加比较容易上手]
VC/VC++/VC# 只是用来开发C/C++/C#应用程序的软件中的一种。
......
Data Type Ranges
C/C++ recognizes the types shown in the table below.
Type Name Bytes Other Names Range of Values
&nb ......