問題:我正在撰寫這個程式,它允許用戶在從 int 函式呼叫后通過 fgets() 方法在 void 函式中輸入他們的姓名和學校詳細資訊,我如何確保此 void 函式中的陣列是全域陣列然后允許我呼叫另一個名為 list users 的函式來列出所有用戶詳細資訊?
int main(){
int choice, userEnd =1;
printf("1: list user details\n");
printf("2: add user details \n");
printf("3: end the programme\n");
while(userEnd)
{
printf("Enter your choice: \n");
scanf("%d",&choice);
if(choice==1){
listUsers();
}
if(choice ==2){
addUsers();
}
if(choice ==3){
userEnd =0;
}
}
return 0;
}
void addUsers(){
int length = 100;
char userName[length];
char className[length];
printf("Enter user name\n");
fgets(userName,size,stdin);
printf("Enter className:\n");
fgets(className,size,stdin);
printf("User added\n");
}
void listUsers(){
/*if addUsers array is empty, print "empty", else print all user details from addUsers.*/
printf("your name is %s, your class is %s",userName, userSize)
}
uj5u.com熱心網友回復:
如果你想宣告一個全域陣列,你必須在函式范圍之外宣告它,所以在你的情況下:
/* global array, declared in the global scope */
array_type array[ELEMENTS];
int main () {
}
void addUsers () {
}
void listUsers () {
}
使用該設定,您將能夠從每個函式操作陣列。
但是,正如評論中所說,在這種情況下您不應該使用全域變數/陣列。相反,您應該使用回傳值和引數。
uj5u.com熱心網友回復:
這樣的事情會做!請注意,此代碼仍然是您想要執行的操作的非作業副本,但只需稍加改動,它應該可以正常作業。
/* Global vars */
const int length = 100;
char *userName[length]; // array of strings
char *className[length];
/* Keep track of number of users */
int userCount = 0;
int main(){
int choice, userEnd =1;
printf("1: list user details\n");
printf("2: add user details \n");
printf("3: end the programme\n");
while(userEnd)
{
printf("Enter your choice: \n");
scanf("%d",&choice);
if(choice==1){
listUsers();
}
if(choice ==2){
addUsers();
userCount ;
}
if(choice ==3){
userEnd =0;
}
}
return 0;
}
void addUsers(){
// TODO: make sure userCount doesn't exceed the length
// TODO: define size
printf("Enter user name\n");
fgets(userName[userCount],size,stdin);
printf("Enter className:\n");
fgets(className[userCount],size,stdin);
printf("User added\n");
}
void listUsers(){
int i;
/*if addUsers array is empty, print "empty", else print all user details from addUsers.*/
if (userCount > 0)
{
for (i = 0, i < userCount, i )
{
printf("your name is %s, your class is %s",userName[i], className[i]);
}
}
else
{
printf("No users registered");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/335634.html
標籤:C
上一篇:為什么換行符不列印?
