gpt4 book ai didi

c - 这是一个简单的电话簿

转载 作者:行者123 更新时间:2023-11-30 20:36:31 25 4
gpt4 key购买 nike

我在使用该程序时遇到了问题 - 这是一个简单的电话簿,您可以在其中输入姓名、号码和邮政编码,但它会给我一些我不太明白的警告。如果有人知道要解决什么问题,请分享。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

int menu(void);
void enter(void);
void searchPhoneNumber(void);
void searchZipCode(void);
void load(void);
void save(void);

static int glb;
static char names[100][100];
static int numbers[100][20];
static int zipCodes[100][4];

int menu(void){
do{
printf("---- PHONE BOOK ----\n");
printf("1. Enter\n");
printf("2. Search by a phone number\n");
printf("3. Search by a zip code\n");
printf("4. Save on the disk\n");
printf("5. Quit\n");
printf("Enter your selection: \n");
scanf("%d", &glb);
}while(glb<1 || glb > 5);
return glb;
}

int main(){
int choice = menu();
do{
switch(choice){
case 1: enter();
break;
case 2: searchPhoneNumber();
break;
case 3: searchZipCode();
break;
case 4: save();
break;
}
}while(choice!=5);
return 0;
}
void load(void){
FILE *fp;
if(fp=fopen("phone-book", "Rb")==NULL){
printf("Error reading file.\n");
exit(1);
}
for(glb = 0;glb<100;glb++){

if(fread(names, sizeof names, 1, fp)!=1){
printf("Error reading files.\n");
exit(1);
}
if(fread(numbers, sizeof numbers, 1, fp)!=1){
printf("Error reading files.\n");
exit(1);
}
if(fread(zipCodes, sizeof zipCodes, 1, fp)!=1){
printf("Error reading files.\n");
exit(1);
}

}
fclose(fp);
}
void enter(void){
int i = 0;
for(;glb<100;glb++){
if(glb<100){
printf("Enter name: \n");
gets(names[i]);

}
}
}
void searchPhoneNumber(void){
int i=0;
int enteredNumber[10];
for(glb=0;glb<100;glb++){
printf("Enter to search by phone number: \n");
gets(enteredNumber[i]);
if(!strcmp(enteredNumber, numbers)){
printf("%c %c", enteredNumber[i], numbers);
}
}
}

void searchZipCode(void){
int i = 0;
int enteredZipCode[4];
for(glb=0;glb<100;glb++){
printf("Enter to search by zip code: (4 digits)\n");
scanf("%d", &enteredZipCode[i]);
if(enteredZipCode!=zipCodes){
printf("%d %d", enteredZipCode[i], zipCodes);
}
}
}
void save(void){
FILE *fp;

if(fp=fopen("phone-book", "wb")==NULL){
printf("Cannot write file.\n");
exit(1);
}
for(glb=0;glb<100;glb++){
if(fwrite(names, sizeof names, 1, fp)!=1){
printf("Error saving file.\n");
exit(1);
}
if(fwrite(numbers, sizeof numbers, 1, fp)!=1){
printf("Error saving file.\n");
exit(1);
}
if(fwrite(zipCodes, sizeof zipCodes, 1, fp)!=1){
printf("Error saving file.\n");
exit(1);
}

}
fclose(fp);
}

警告

/main.c:50:10: Incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
/main.c:50:10: Using the result of an assignment as a condition without parentheses
/main.c:87:14: Incompatible integer to pointer conversion passing 'int' to parameter of type 'char *'
/main.c:88:20: Incompatible pointer types passing 'int [10]' to parameter of type 'const char *'
/main.c:88:35: Incompatible pointer types passing 'int [100][20]' to parameter of type 'const char *'
/main.c:89:47: Format specifies type 'int' but the argument has type 'int (*)[20]'
/main.c:100:26: Array comparison always evaluates to true
/main.c:100:26: Comparison of distinct pointer types ('int *' and 'int (*)[4]')
/main.c:101:48: Format specifies type 'int' but the argument has type 'int (*)[4]'
/main.c:108:10: Incompatible integer to pointer conversion assigning to 'FILE *' (aka 'struct __sFILE *') from 'int'
/main.c:108:10: Using the result of an assignment as a condition without parentheses

最佳答案

错误修复:
1.正确的阅读形式:if((fp=fopen("phone-book", "wb"))==NULL)
2.在函数 void searchPhoneNumber(void) 中,您尝试通过 gets() 读取 int 数组,这是一个 fatal error 。
你在 int 数组和 char 数组之间使用了 strcmp() , fatal error

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <conio.h>

int menu(void);
void enter(void);
void searchPhoneNumber(void);
void searchZipCode(void);
void load(void);
void save(void);

static int glb;
static char names[100][100];
static int numbers[100][20];
static int zipCodes[100][4];

int menu(void)
{
do
{
printf("---- PHONE BOOK ----\n");
printf("1. Enter\n");
printf("2. Search by a phone number\n");
printf("3. Search by a zip code\n");
printf("4. Save on the disk\n");
printf("5. Quit\n");
printf("Enter your selection: \n");
scanf("%d", &glb);
}
while(glb<1 || glb > 5);
return glb;
}

int main()
{
int choice = menu();
do
{
switch(choice)
{
case 1:
enter();
break;
case 2:
searchPhoneNumber();
break;
case 3:
searchZipCode();
break;
case 4:
save();
break;
}
}
while(choice!=5);
return 0;
}
void load(void)
{
FILE *fp;
if((fp=fopen("phone-book", "r"))==NULL)
{
printf("Error reading file.\n");
exit(1);
}
for(glb = 0; glb<100; glb++)
{

if(fread(names, sizeof names, 1, fp)!=1)
{
printf("Error reading files.\n");
exit(1);
}
if(fread(numbers, sizeof numbers, 1, fp)!=1)
{
printf("Error reading files.\n");
exit(1);
}
if(fread(zipCodes, sizeof zipCodes, 1, fp)!=1)
{
printf("Error reading files.\n");
exit(1);
}

}
fclose(fp);
}
void enter(void)
{
int i = 0;
for(; glb<100; glb++)
{
if(glb<100)
{
printf("Enter name: \n");
gets(names[i]);

}
}
}
void searchPhoneNumber(void)
{ `Completely wrong use of gets() and strcmp()`
/*
int i=0;
int enteredNumber[10];

for(glb=0; glb<100; glb++)
{
printf("Enter to search by phone number: \n");
gets(enteredNumber);///error: you can not use gets on int array

if(!strcmp(enteredNumber, numbers))///error: you can not use strcmp() between int array and char array
{
printf("%c %c", enteredNumber[i], numbers);
}
}*/
}

void searchZipCode(void)
{
int i = 0;
int enteredZipCode[4];
for(glb=0; glb<100; glb++)
{
printf("Enter to search by zip code: (4 digits)\n");
scanf("%d", &enteredZipCode[i]);
if(enteredZipCode!=zipCodes[glb])///previous:error, zipCodes is an array.
{
printf("%d %d", enteredZipCode[i], zipCodes[glb]);
}
}
}
void save(void)
{
FILE *fp;

if((fp=fopen("phone-book", "wb"))==NULL)
{
printf("Cannot write file.\n");
exit(1);
}
for(glb=0; glb<100; glb++)
{
if(fwrite(names, sizeof names, 1, fp)!=1)
{
printf("Error saving file.\n");
exit(1);
}
if(fwrite(numbers, sizeof numbers, 1, fp)!=1)
{
printf("Error saving file.\n");
exit(1);
}
if(fwrite(zipCodes, sizeof zipCodes, 1, fp)!=1)
{
printf("Error saving file.\n");
exit(1);
}

}
fclose(fp);
}

请勾选我的答案,让我的答案变得有用,我为你工作过。

关于c - 这是一个简单的电话簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35911395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com