罗斯伤病目前如何:关于c编程的小问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 08:52:03
11、怎样读取文本里面的数据赋值给ini类型?
举例:文本里面写着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