gpt4 book ai didi

c - 这是什么错误?无法将参数 'char**' 的 'char*' 转换为 '1' 到 'char* strcpy(char*, const char*)

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:33 27 4
gpt4 key购买 nike

#define NAME_LEN 20 
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#pragma warning(disable:4996)

typedef struct bank
{
char *name[NAME_LEN];
int id;
int money;
struct bank *next;
} bank;

bank *head, *tail; // 노드의 처음과 끝

void Init_account(FILE *fp); // 노드의 처음과 끝에 메모리 할당하고, 파일에서 입력을 받도록 하는 함수
void Make_account(FILE *fp); // 계좌를 생성하는 함수
void Deposit(FILE *fp); // 입금 함수
void WithDraw(FILE *fp); // 출금 함수
void WriteAccount(FILE *fp); // 계좌의 정보를 저장하는 함수
void Account_inquire(void); // 계좌를 조회하는 함수
void ReadAccount(int id, char *name, int money); // 텍스트 파일에서 입력을 받는 함수

void Init_account(FILE *fp)
{
int id;
char name[NAME_LEN];
int money;

head = (bank *)malloc(sizeof(bank));
tail = (bank *)malloc(sizeof(bank));
head->next = tail;
tail->next = tail;

while (fscanf(fp, "%d %s %d", &id, name, &money) == 3){ // 정수형, 문자형, 정수형 3개일 때만 입력을 받음
ReadAccount(id, name, money);
}
}

void ReadAccount(int id, char *name, int money)
{
bank *t;
t = (bank *)malloc(sizeof(bank));
t->id = id;
strcpy(t->name, name);
t->money = money; // this code has problem //
t->next = head->next; // 다음 노드를 가리킴
head->next = t; // 노드의 처음을 가리킴
}

void Make_account(FILE *fp)
{
int id;
char name[NAME_LEN];
int money;
bank *t;
t = (bank *)malloc(sizeof(bank));
printf("\n*********계좌 생성*********\n");
printf("계좌번호 : "); scanf("%d", &id);
printf("예 금 주 : "); scanf("%s", name);
printf("입 금 액 : "); scanf("%d", &money);
t->id = id;
strcpy(t->name, name);
t->money = money;
t->next = head->next;
head->next = t;
WriteAccount(fp); // 저장하는 함수로 파일 포인터를 넘겨줌
}

void Deposit(FILE *fp)
{
int id;
int money;
bank *t;
printf("계좌번호 : "); scanf("%d", &id);
printf("입 금 액 : "); scanf("%d", &money);

for (t = head->next; t != tail; t = t->next)
{
if (t->id == id)
{
t->money += money; // 잔액에 입금할 금액을 더해서
WriteAccount(fp); // 저장
return;
}
}
printf("없는 계좌번호입니다.\n");
}

void WithDraw(FILE *fp)
{
int id;
int money;
bank *t;
printf("계좌번호 : "); scanf("%d", &id);
printf("출 금 액 : "); scanf("%d", &money);

for (t = head->next; t != tail; t = t->next)
{
if (t->id == id)
{
if (t->money
{
printf("출금액이 잔액을 초과할 수 없습니다.\n");
return;
}
else
{
t->money -= money; // 잔액에서 출금액을 빼서
}

WriteAccount(fp); // 저장
return;
}
}

printf("없는 계좌번호입니다.\n");
}

void Account_inquire(void)
{
bank *t;
for (t = head->next; t != tail; t = t->next)
{
printf("\n*********잔액 조회*********\n");
printf("계좌번호 : %d\n", t->id);
printf("예 금 주 : %s님\n", t->name);
printf("잔 액 : %d원\n\n", t->money);
}
}

void WriteAccount(FILE *fp)
{
bank *t;
rewind(fp); // 파일 읽는 포인터 지점을 맨 첨으로 돌리는 함수

for (t = head->next; t != tail; t = t->next)
{
fprintf(fp, "%d %s %d\n", t->id, t->name, t->money);
}
}

int main()
{
int input;
FILE *fp;
fp = fopen("data.txt", "r+"); // 파일모드가 r+일 경우 읽고쓰기를 동시에 수행 합니다.
Init_account(fp);

do
{
printf("계좌 생성&관리 프로그램입니다. 원하시는 번호를 입력하세요.\n");
printf("*********************************************\n");
printf("1)계좌 생성 2)계좌 조회 3)입금 4)출금 5)종료\n");
printf("*********************************************\n");
printf("입력 >");
scanf("%d", &input);

switch (input){
case 1:
Make_account(fp);
break;
case 2:
Account_inquire();
break;
case 3:
Deposit(fp);
break;
case 4:
WithDraw(fp);
break;
case 5:
input = 0;
free(head); // 종료하면서 메모리 반환
free(tail);
break;
default:
printf("잘못 입력하셨습니다. \n");
return main();
}
}
while (input != 0);
}

我是韩国人。

我还为我的作业编写了“银行管理程序代码”。

但是我的代码有问题。(请忽略韩国)

当我运行我的代码时,错误

对于参数“1”到“char* strcpy(char*, const char*)”发生的情况,无法将“char**”转换为“char*”。

我不知道这个问题。

所以我在该部分添加 *。

但是问题并没有解决。

我的代码有问题吗?

请帮帮我。

最佳答案

char * name[NAME_LEN];
^ ^ ^ ^
| | | |
| | | is an array of NAME_LEN
| | name
| pointers to
char

您必须将其更改为:

char name[NAME_LEN];
^ ^ ^
| | |
| | is an array of NAME_LEN
| name
char

char *name[NAME_LEN]; 是一个指针数组,而不是字符数组。所以当你调用 strcpy(t->name, name); t->name 变为 char** 类型而不是 char*

关于c - 这是什么错误?无法将参数 'char**' 的 'char*' 转换为 '1' 到 'char* strcpy(char*, const char*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50366120/

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