我是靠谱客的博主 潇洒悟空,最近开发中收集的这篇文章主要介绍c 语言怎么输入给结构体,【新人】关于结构体格式化输入,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

【新人求助】关于结构体格式化输入

scanf("%d   %s  %s  %s  %d",&bookS.bookNumber,&bookS.bookName[20],&bookS.bookPM[20],&bookS.bookPress[20],&bookS.bookStatus);

fprintf(fp,"%d   %s  %s  %s  %d n",bookS.bookNumber,bookS.bookName,bookS.bookPM,bookS.bookPress,bookS.bookStatus);}

在运行后,写入的文件出现乱码

运行环境:ubuntu   qtCreater

------解决方案--------------------

仅供参考//学号 姓名 电话 成绩

//01 XXX 182XXXXXXXX 88

#include 

#include 

#define MAXS 10000

struct ST {

int XH;

char XM[11];

char DH[13];

int CJ;

} st[MAXS];

int n,i;

char ln[80];

FILE *f;

int main() {

f=fopen("in.txt","r");

if (NULL==f) {

printf("Can not open file in.txt!n");

return 1;

}

i=0;

while (1) {

if (NULL==fgets(ln,80,f)) break;

if (4!=sscanf(ln,"%d%10s%12s%d",&st[i].XH,st[i].XM,st[i].DH,&st[i].CJ)) {

st[i].XH=0;

strcpy(st[i].XM,"Unknown");

strcpy(st[i].DH,"Unknown");

st[i].CJ=0;

printf("line %d format error:%s!n",i+1,ln);

}

i++;

if (i>=MAXS) {

printf(">%d lines Ignored.n",MAXS);

break;

}

}

fclose(f);

n=i;

for (i=0;i

printf("%5d%10s%12s%4dn",st[i].XH,st[i].XM,st[i].DH,st[i].CJ);

}

return 0;

}

//NAME: essaie bla bla

//DIMENSION: 8

//DATA

//1  14  15

//2  11  10

//3  6   4

//4  7   13

//5  9   21

//6  19  3

//7  1   5

//8  8   8

//EOF

//

// 文本文件中可能还含有其他内容,但是需要用到的内容即以上

//比如data.txt:

//NAME: essaie bla bla

//其它内容

//DIMENSION: 8

//其它内容

//DATA

//其它内容

//1  14  15

//其它内容

//2  11  10

//其它内容

//3  6   4

//其它内容

//4  7   13

//其它内容

//5  9   21

//其它内容

//6  19  3

//其它内容

//7  1   5

//其它内容

//8  8   8

//其它内容

//EOF

// 目标是要获取NAME后字串,DIMENSION后数值,以及DATA以下的数值

// 其中NAME就是随便个字句,DIMENSION是城市数量,DATA以下是城市编号,X坐标,Y坐标

// 所有的这些将赋值给一个事先定义好的结构

#include 

#include 

#define MAXCPL   80   //每行最大字符数

#define MAXCITY  100  //每组数据中DATA最多项数,DIMENSION的最大值

#define MAXNAMEL 32   //NAME最大长度

struct S {

char NAME[MAXNAMEL+1];

int  DIMENSION;

struct D {

int NO;

int X;

int Y;

} DATA[MAXCITY];

} s;

FILE *f;

int st,n,i;

char ln[MAXCPL];

int main() {

f=fopen("data.txt","r");

if (NULL==f) {

printf("Can not open file data.txt!n");

return 1;

}

st=0;

n=0;

while (1) {

if (NULL==fgets(ln,MAXCPL,f)) break;

if (st==0) {

if (1==sscanf(ln,"NAME: %32[^n]",s.NAME)) st=1;

} else if (st==1) {

if (1==sscanf(ln,"DIMENSION: %d",&s.DIMENSION)) st=2;

最后

以上就是潇洒悟空为你收集整理的c 语言怎么输入给结构体,【新人】关于结构体格式化输入的全部内容,希望文章能够帮你解决c 语言怎么输入给结构体,【新人】关于结构体格式化输入所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部