石原莉奈2017九息:关于c编程的小问题
举例:文本里面写着1 2 3 4 5,我读取以后,赋值结果为49 50 51 52 53。怎样才能使赋值结果为1 2 3 4 5呢?
22、再xp里面用tb22编,出来的结果很长时,前面的结果会消失不见,怎样能够保存前面的结果?怎样能使全部结果都出来?
同意 龙车花卉 所说
不过atoi()函数不在头文件:math.h
头文件应该是 stdlib.h
我这里给你提供两个我自己写的函数
分别用来读取 几个连续的整数还有浮点数
请笑纳
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
/****** 可以转化成浮点数的 ******/
int getmyd(char * line,double **hisd)
/* (来源字符串 double指针的指针或者说是一个double指针的地址),
二次double指针用来修改主调函数的那个double指针的值,
返回值是double的个数,
*/
{ int alen=0,dlen;
char *give,*send;
double* myd;
dlen=2+(strlen(line)/2);
myd= (double*)calloc ( dlen,sizeof (double*));
give=line;
do
{send=give;
*(myd+alen)=strtod (send,&give);
alen++;
}
while (send!=give);
alen--;
*hisd=myd;
return alen;
}
/****** 可以转化成整数的 ******/
int getmyl(char * line,long **hisl)
/* (来源字符串 long指针的指针或者说是一个long指针的地址),
二次long指针用来修改主调函数的那个long指针的值,
返回值是long的个数,
*/
{ int alen=0,dlen;
char *give,*send;
long* myd;
dlen=2+(strlen(line)/2);
myd= (long*)calloc ( dlen,sizeof (long*));
give=line;
do
{send=give;
*(myd+alen)=strtol (send,&give,10);
alen++;
}
while (send!=give);
alen--;
*hisl=myd;
return alen;
}
/*
注意用完要记得在主调函数中 free(double *)或者free(long *)以释放资源;
以下是一个示例:
*/
main ( ){
int ul,ud;
long *myl;
double *myd;
char* hal=" 12 15 25 22 15 15 185";
char* had=" 12.3 15 25.9 22 15 15.1 185";
ul=getmyl(hal,&myl);
ud=getmyd(had,&myd);
printf ("this long %d\n",*myl);
printf ("this long %d\n",*(myl+1));
printf ("this long %d\n",*(myl+2));
printf ("\nul: long %d\n",ul);
for (int i=0;i<ul;i++ )
{
printf ("long数组引用 %d\n",myl[i]);
}
printf ("\n\n");
printf ("this double %g\n",*myd);
printf ("this double %g\n",*(myd+1));
printf ("this double %g\n",*(myd+2));
printf ("\nud: double %d\n",ud);
for (int i=0;i<ud;i++ )
{
printf ("double数组引用 %g\n",myd[i]);
}
free(myd);
free(myl);
}
可以先记录在一个变量里,如
char p[256];
......加入读文件,
p= /*加入赋值*/
然后: int k = (int)atoi(p);
第二个问题用同样的办法, 读出一个数, 先在p[i]中记录, 最后在p[i]=0;这样形成一个字符串, 就可以用atoi()函数了, 记得头文件:math.h
11,因为你直接对变量赋值,所以赋值为对应字符的asc码值,你可以直接减去就可以了,字符‘0’的asc码值为48,在赋值的时候就可以这样:
int i;
i=‘1’;
这样i的值为49,你可以这样
int i,j;
j=‘1’;
i=j-48;
这样i的值为1。
22,输出结果时,如果结果很多,但每个不时很长,那样你在输出语句中尽量不要用“\n”即换行符,可以使用“\t”制表符,这样既可以显示更多的结果,也不会使结果都挤在一起无法辨认
读取之后用函数进行转换,可以查一下c手册,函数有详细介绍
en