社区
C语言
帖子详情
C语言 输出格式问题
gaohaizhao
2009-04-20 04:50:16
怎么样控制printf()函数的打印输出格式?? 有个制表符,想把输出结构打印成表格形式,一共有四列,好像还要用输出域,请问各位高手怎么搞啊??
...全文
310
10
打赏
收藏
C语言 输出格式问题
怎么样控制printf()函数的打印输出格式?? 有个制表符,想把输出结构打印成表格形式,一共有四列,好像还要用输出域,请问各位高手怎么搞啊??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
afangsky
2009-04-20
打赏
举报
回复
\t
gaohaizhao
2009-04-20
打赏
举报
回复
就是一个词法分析程序,源程序source.c文件自己随便找一个就可以了
我想让打印输出结果分成四列,就像一个表格样式一样
下面是源程序:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define NULL 0
FILE *fp;//文件指针
char str;
//建立关键字指针数组
char *keyword[8]={"if","else","break","for","while","do","return","continue"};
int search(char searchstr[],int wordtype) //标识符匹配
{
int p;
int i=0;
switch (wordtype)
{
case 1:
for(i=0;i<=7;i++)
{
if(strcmp(keyword[i],searchstr)==0) //字符串比较
{p=i+1; break;}
else p=0;
}
}
return(p);
}
char letterprocess(char ch)//字母处理函数
{
int i=-1;
char letter[20];
while(isalnum(ch)!=0||ch=='_')//读取到的为数字或字母或下划线
{
letter[++i]=ch;
ch=fgetc(fp);
};
letter[i+1]='\0';
if(search(letter,1))//查关键字表,找到为关键字,否则为标识符
{
printf("(%s,1)\t",letter);
}else{printf("(%s,2)\t",letter);}
return(ch);
}
char numberprocess(char ch)//数字处理函数
{
int i=-1;
char number[20];
while(isdigit(ch)||ch=='.')//读取为数字或小数点
{
number[++i]=ch;
ch=fgetc(fp);
}
number[i+1]='\0';
printf("(%s,3)\t",number);
return (ch);
}
char otherprocess(char ch){//处理非数字和字母函数
char other[20];
other[0]=ch;
other[1]='\0';
//分界符识别
if(ch=='{'||ch=='}'||ch=='('||ch==')'||ch==','||ch==';'||ch=='#'||ch=='"'||ch=='.')
{
printf("(%s,5)\t",other);
ch=fgetc(fp);
return(ch);
}
else if(ch=='+'||ch=='*'||ch=='/'||ch=='%')//操作运算符识别
{
printf("(%s,4)\t",other);
ch=fgetc(fp);
return(ch);
}else if(ch=='<'||ch=='>'||ch=='='||ch=='!')//比较运算符识别
{
//超前阅读,取其下一个字符,如为‘=’则将其写入数组中,否则只输出当前读取的字符
ch=fgetc(fp);
if(ch=='=')
{
other[1]=ch;
other[2]='\0';
printf("(%s,4)\t",other);
return(ch);
}
else
{
printf("(%s,4)\t",other);
return ch;
}
}else if(ch=='&')//识别‘&’与‘&&’
{
ch=fgetc(fp);//超前阅读
if(ch=='&')//如果其后一个字符为‘&’,则将其后一个字符也写入数组中并输出
{
other[1]=ch;
other[2]='\0';
printf("(%s,4)\t",other);
return(ch);
}else
{
printf("(%s,4)\t",other);
return(ch);
}
}else if(ch=='\\')//识别‘\n’
{
ch=fgetc(fp);
if(ch=='n')
{
other[1]=ch;
other[2]='\0';
printf("(%s,5)\t",other);
return(ch);
}
}else if(ch=='-')//判断‘-’是负号还是减号
{
ch=fgetc((fp-1));//取其前一个字符,如果为数字则为减号,否则为负号
if(isdigit(ch))
{
ch=fgetc((fp+1));//指针回指到下一个字符,取下一个字符
for(int i=1;i>=1;i++)
{
other[i]=ch;
other[i+1]='\0';
}
printf("(%s,4)\t",other);
return(ch);
}else
{
other[1]=ch;
ch=fgetc(fp);
other[2]=ch;
other[3]='\0';
printf("(%s,3)\t",other);
ch=fgetc(fp);
return(ch);
}
}
return ch;
}
void main()
{
if((fp=fopen("source.c","r"))==NULL)//以读取的方式打开文件
{
printf("cannot open file\n");//打开失败时直接结束
exit(0);
}
else
{
str = fgetc(fp);
while(str!=EOF)
{
if(str==' '||str=='\n')//掠过空格和换行
str =fgetc(fp);
else if (isalpha(str)){//如为数字或字母对调用字母处理函数
str =letterprocess(str);
}
else if (isdigit(str))
str =numberprocess(str);//调用数字处理函数
else str =otherprocess(str);//调用其他非数字和字母函数
}
}
fclose(fp);
}
nouce
2009-04-20
打赏
举报
回复
[Quote=引用 4 楼 magipan 的回复:]
加一个计数,四个一换行
[/Quote]
这个应该比较好点!
lingyin55
2009-04-20
打赏
举报
回复
加个循环判断啊
猫已经找不回了
2009-04-20
打赏
举报
回复
举个例子,好帮你写
九桔猫
2009-04-20
打赏
举报
回复
用循环语句
magipan
2009-04-20
打赏
举报
回复
加一个计数,四个一换行
gaohaizhao
2009-04-20
打赏
举报
回复
\t 只会一直打印,一行可能会输出很多结果,我想控制一行只输出四个结果
mengde007
2009-04-20
打赏
举报
回复
printf("%d\t",a);
nextel
2009-04-20
打赏
举报
回复
\t?
C语言
中
输出格式
问题
本文深入解析
C语言
中
输出格式
%m.ns的使用方法,详细阐述了如何通过m和n参数控制输出宽度和字符串长度,以及在不同情况下字符串的输出表现和空格填充规则。
C语言
格式化输出
问题
和`scanf`无限循环
问题
分析
本文详细探讨了
C语言
中格式化输出中浮点数精度
问题
,包括double和float的精度、printf的默认行为,以及如何解决scanf导致的无限循环
问题
,通过修改输入处理避免非整数输入引发的死循环。,
C语言
强制转换与
输出格式
不对应
问题
本文探讨了在
C语言
中,如何正确使用强制类型转换以避免
输出格式
不对应的
问题
。通过实例分析,阐述了不同类型数据转换的注意事项,强调了理解数据类型与printf函数格式指定符之间的关系,以及确保类型转换后的数据能够正确输出的重要性。
c语言
输出小数的格式
问题
本文介绍如何使用
C语言
中的printf函数精确控制浮点数的
输出格式
,包括限制小数点后的位数、限制整体位数及使用%g去除无意义的0,帮助开发者更好地掌握数值显示。
关于
C语言
中浮点数的输入
输出格式
问题
本文详细介绍了
C语言
中浮点数(float, double, long double)的输入输出方法及格式控制,包括%f, %e, %g等格式符的用法区别,并提供了具体的示例代码。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章