#include <stdio.h> #include <stdlib.h> struct telnote { int no; char name[20]; char tel[20]; }; int main(void) { int code, i, cnt = 0; char scode[10]; FILE *fp; struct telnote mytel[10], buff, * p; p = &buff; while (1) { printf("\nコード入力:"); gets_s(scode); code = atoi(scode); if (code <= 0)break; p->no = code; printf("氏名入力:"); gets_s(p->name); printf("電話番号入力:"); gets_s(p->tel); mytel[cnt] = ;//补充完成 ++cnt; } if (cnt > 0) { fp = fopen("mytel.data", "w"); if (fp == NULL) { printf("file open error!!\n"); exit(1); } printf("\nコード氏名 電話番号\n"); for (i = 0; i < cnt; i++) { printf("%5d %-15s %-15s\n", buff.no, buff.name, buff.tel); fprintf();//补充完成 } fclose(fp); } else { printf("\nデータが入力されていません\n"); } return 0; }把缺失的补充完成
时间: 2024-03-29 13:36:00 浏览: 86
在代码中,需要补充完成以下两处:
1. 在while循环中,将输入的数据存入数组中。
```c
while (1) {
printf("\nコード入力:");
gets_s(scode);
code = atoi(scode);
if (code <= 0)break;
p->no = code;
printf("氏名入力:");
gets_s(p->name);
printf("電話番号入力:");
gets_s(p->tel);
mytel[cnt] = buff; // 将输入的数据存入数组中
++cnt;
}
```
2. 在for循环中,将数据写入文件中。
```c
for (i = 0; i < cnt; i++) {
printf("%5d %-15s %-15s\n", mytel[i].no, mytel[i].name, mytel[i].tel);
fprintf(fp, "%d %s %s\n", mytel[i].no, mytel[i].name, mytel[i].tel); // 将数据写入文件中
}
```
相关问题
优化这段代码#include<stdio.h> #include<stdlib.h> #include<malloc.h> #include<conio.h> #define OK 1 #define error 0 #define MVNum 100 #define MAXSIZE 10 typedef int OtherInfo,QElemtype; typedef char VerTexType; //结构体定义 typedef struct ArcNode{ int adjvex;
首先,该段代码中包含了一些不必要的头文件,例如:conio.h,malloc.h等。建议只保留stdio.h和stdlib.h。
其次,可以将#define OK 1和#define error 0替换为枚举类型,使代码更加清晰易读。
最后,在结构体定义中,可以将OtherInfo和QElemtype合并为一个类型,避免定义过多类型。同时,也可以将结构体中的变量类型进行优化,例如将int类型的adjvex改为short或者char类型。
重构后的代码如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 100
#define MAX_ARC_NUM 10
typedef enum {
ERROR = 0,
OK = 1
} Status;
typedef char VertexType;
typedef int ArcType;
typedef struct ArcNode {
int adjvex;
struct ArcNode* nextarc;
ArcType* info;
} ArcNode;
typedef struct VNode {
VertexType data;
ArcNode* firstarc;
} VNode, AdjList[MAX_VERTEX_NUM];
typedef struct {
AdjList vertices;
int vexnum, arcnum;
} ALGraph;
```
希望可以帮到你。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #define PHONE_SIZE 50 #define NAME_SIZE 20 typedef struct lxr { char phone[PHONE_SIZE]; char name[NAME_SIZE]; }lxr; int main() { lxr a[10]; a[0].phone = "liujunjie"; printf("%s", a[0].phone); return 0; }
这段代码存在一些问题。首先,您不能直接将字符串赋值给字符数组。其次,如果您想将字符串复制到字符数组中,您应该使用strcpy函数而不是直接赋值运算符。另外,还需要注意将字符串赋值给字符数组时,字符数组的大小应该足够大以容纳整个字符串。以下是修改后的代码:
```c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define PHONE_SIZE 50
#define NAME_SIZE 20
typedef struct lxr {
char phone[PHONE_SIZE];
char name[NAME_SIZE];
} lxr;
int main()
{
lxr a[10];
strcpy(a[0].phone, "liujunjie"); // 使用strcpy函数将字符串复制给字符数组
printf("%s", a[0].phone);
return 0;
}
```
这样,代码就能正常运行并输出"liujunjie"。
阅读全文