浙江省高等学校教师教育理论培训

微信搜索“毛凌志岗前心得”小程序

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C笔记 - 戒色 - 博客园

1、用scanf,fscanf,fprintf特别要注意格式化的问题,不恰当使用会导致异常:

在连续录入或读取多个字符串时, scanf、fscanf,整形必须用%d,浮点要用%f,字符型用%s(若用%c格式输入字符时,空格字符和“转义字符”都作为有效字符输入)

fprintf:char字符型用%c 整形用%d;  

  //%d%s%s char字符类型要用%s,整形用%d    

scanf("%d%s%s",&eTemp.sId,eTemp.sName,&eTemp.sSex);    

//char字符型用%c 整形用%d    

fprintf(pFile,"%d\t%s\t%c\n",eTemp.sId,eTemp.sName,eTemp.sSex);

 int i = fscanf(pFile,"%d%s%s",&eTemp.sId,eTemp.sName,&eTemp.sSex);    if(i == -1) break;    printf("%d\t%s\t%c\n",eTemp.sId,eTemp.sName,eTemp.sSex);

 

fscanf:最好获取其返回值,判断是否为取得的field数量,否则退出break;

i = fscanf(pUser,"%s%s%s",telNo,userName,passWord);    if(i!=3) break;

 

fread(buffer,size,count,fp) 与fwrite(buffer,size,count,fp):

size为读取的每个数据项的字节数,返回值为输入或输出数据项的个数,即count,可通过返回值判断是否读取成功,否则break;

fread:

最好获取其返回值,判断是否为0,为0则退出循环break;

或者判断其返回值是否为count; if(fread(buffer,size,count,fp) != 1) break; if(returnValue == 0) break;

posted on 2012-07-08 00:11  lexus  阅读(223)  评论(0编辑  收藏  举报