
1、 添加printf的头文件 #include <stdioh>
2、重写int fputc(int ch, FILE f)函数
int fputc(int ch, FILE f);
函数
int fputc(int ch, FILE f)
{
USART_SendData(USART1, (uint8_t) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return ch;
}
3、修改一下选中Use MicroLIB Target——Code Generation——选中Use MicroLIB
可以使用gmtime函数或localtime函数将time_t类型的时间日期转换为struct tm类型(年、月、日、时、分、秒)。
使用time函数返回的是一个long值,该值对用户的意义不大,一般不能根据其值确定具体的年、月、日等数据。gmtime函数可以方便的对time_t类型数据进行转换,将其转换为tm结构的数据方便数据阅读。gmtime函数的原型如下:struct tm gmtime(time_t timep);localtime函数的原型如下:struct tm localtime(time_t timep);将参数timep所指的time_t类型信息转换成实际所使用的时间日期表示方法,将结果返回到结构tm结构类型的变量。gmtime函数用来存放实际日期时间的结构变量是静态分配的,每次调用gmtime函数都将重写该结构变量。如果希望保存结构变量中的内容,必须将其复制到tm结构的另一个变量中。gmtime函数与localtime函数的区别:gmtime函数返回的时间日期未经时区转换,是UTC时间(又称为世界时间,即格林尼治时间)。localtime函数返回当前时区的时间。
转换日期时间表示形式time_t类型转换为struct tm类型示例:
#include <stdioh>
#include <timeh>
int main()
{
char wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};/指针字符数组/ time_t t;
struct tm p;
t=time(NULL);/获取从1970年1月1日零时到现在的秒数,保存到变量t中/ p=gmtime(&t); /变量t的值转换为实际日期时间的表示格式/
printf("%d年%02d月%02d日",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);
printf(" %s ", wday[p->tm_wday]);
printf("%02d:%02d:%02d\n", p->tm_hour, p->tm_min, p->tm_sec);
return 0;
}
注意:p=gmtime(&t);此行若改为p=localtime(&t);则返回当前时区的时间。
#include <stdioh>
void PrintStr();//函数声明
void main(void)
{
PrintStr();//函数调用
}
void PrintStr()//重写函数体
{
char str="I Love China!";
printf("%s",str);
}
有以下三种方式可以做到:
1 使用重定向函数freopen将标准输出重定向到对应的txt文件。
其使用方法为,在所有的系统输出前,调用
stdout = freopen("outtxt", "w", stdout);
outtxt即所要写入的txt文件名。
2 在执行时处理。
编译最终生成的为可执行文件,运行也是运行这个文件。
在运行文件时,可以通过重定向符号,将输出重定向到其它文件。
如果生成的可执行文件为myexe,那么在命令行调用
myexe > outtxt
即可将myexe的输出写入到outtxt中。
3 以上两种方法都是把所有的标准输出,包括printf, puts, putchar等,均输入到对应文件中。
如果要仅输出printf的结果,可以先打开文件,然后修改代码,把每个printf的调用修改对应的写文件函数。即printf(xxxx);修改为fprintf(fp, xxxxx);的形式。
其中fp为打开的文件指针。
fp=fopen("c:\\TCWIN\\recordtxt","r+");
这一句应该改为fp=fopen("c:\\TCWIN\\recordtxt"a");吧,以追加的形式,不过不一定是这个函数的问题,你可以看看程序的其他部分,全部程序一起调试才好找错误!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)