c 语言程序输出的问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 11:26:02
我有一点程序如下::

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
void printcs();
void convert(int m,char c[]);
main()
{
printcs();
}
void printcs()
{
int m;
char c[2];
char d[2]={'\0','\0'};
memset(c,'\r',sizeof(c));
memset(d,'\r',sizeof(d));
printf("pinput m=");
scanf("%d",&m);
convert(m,c);
printf("%c",c[0]);
printf("%c",c[1]);
printf("\n");
printf("%s\n",c);
d[0]=c[0];
d[1]=c[1];
printf("d is %s , size is %d",d,sizeof(d));
}
void convert(int m,char c[2])
{

c[0]=m/10+'0';
c[1]=m%10+'0';
}
运行的结果如下::pinput m=23
23
23⭿
B⭿H㭿̨߷

#include "StdAfx.h"

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
void printcs();
void convert(int m,char c[]);

main()
{
printcs();
}

void printcs()
{
int m;
char c[3]; //这里必须改成3,因为如果把c当成字符串的话,字符串的未尾必须有一个零字符.
char d[3]={'\0','\0','\0'}; //这里改为3的原因同上.
memset(c,'\r',sizeof(c)); //这一句可以不要.如果硬要的话,改成memset(c,0,sizeof(c));要好得多.
memset(d,'\r',sizeof(d)); //这一句可以不要.如果硬要的话,改成memset(d,0,sizeof(d));要好得多.
printf("pinput m=");
scanf("%d",&m);
convert(m,c);
printf("%c",c[0]);
printf("%c",c[1]);
printf("\n");
c[2] = 0;//这一句必须加,将c当成字符串的话,未尾必须加零.
printf("%s\n",c);
d[0]=c[0];
d[1]=c[1];
d[2]=0;////这一句必须加,