gpt4 book ai didi

c - 由于某种我不明白的原因重置全局变量的值

转载 作者:行者123 更新时间:2023-11-30 21:09:39 25 4
gpt4 key购买 nike

Okive 成功创建了一个函数,该函数输入一个包含 5 个项目的二维数组(您可以从中选择),打印这些项目,然后询问您想要哪个项目,然后将您选择的项目放入其中一个收据,它是我在 main.c 中全局定义的另一个二维数组。这是一个 MCVE:

char receipt[20][200];
static int arrnum=0;

void choose(char arr[5][200]){
int i;

for(i=0;i<=4;i++){
printf("%s\n",arr[i]);
}

printf("Enter in your choice");
int choice;
scanf("%d",&choice);
strcpy(receipt[arrnum],arr[choice-1]);
printf("receipt[0]:%s\n",receipt[0]);
arrnum++;

}
void printreceipt(){
int qnum=0;

printf("Receipt:\n");
int itmnum=0;
while(qnum<arrnum){
printf("Item %d:\n%s",itmnum,receipt[qnum]);
itmnum++;
qnum++;
}

}
int main(){
char strings[5][200]= {"string1","string2","string3","string4","string5"};
choose(strings);
printreceipt();
return 0;

}

在我的更大的程序中,它是一个循环,这样我就可以多次完成这个过程,并在收据中选择不同的选择。在 main 内部,我可以调用receipt[x]并且它可以正常工作。我使用静态全局变量arrnum来跟踪收据内有多少项目以及在哪里放置下一个项目。每次调用choose()时Arrnum都会递增。但在我创建的用于打印收据的函数内,由于某种原因,arrnum 重置为 0。

最佳答案

我稍微修正了你的程序。此版本无需将变量设置为静态即可工作。它基本上将索引号从主线传递到选择函数,然后传递到打印收据函数。

我还添加了一些基本的错误检查,以确保数字在范围内。

您需要使用代码才能使其满足您的需求。

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

char receipt[20][200];

int choose(char arr[5][200],int arrnum){
int i;
for(i=0;i<=4;i++){
printf("%s\n",arr[i]);
}
int choice=0;
while (choice < 1 || choice > 4){
printf("Enter in your choice ");
scanf("%d",&choice);
}
strcpy(receipt[arrnum],arr[choice-1]);
printf("receipt[%d]:%s\n",arrnum,receipt[arrnum]);
arrnum++;
return arrnum;
}
void printreceipt(int arrnum){
printf("Receipt:\n");
int itmnum=0;
while(itmnum<arrnum){
printf("Item %d: %s\n",itmnum+1,receipt[itmnum]);
itmnum++;
}

}
int main(){
int items=0;
char strings[5][200]= {"string1","string2","string3","string4","string5"};
items=choose(strings,items);
// items=choose(strings,items); <--add more of these lines if you want more items on the receipt.
printreceipt(items);
return 0;

}

关于c - 由于某种我不明白的原因重置全局变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33885383/

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