Sponsored Content
Top Forums Programming [solved]help passing array of structs to function in c Post 302624731 by bjhum33 on Monday 16th of April 2012 05:16:38 PM
Old 04-16-2012
[solved]help passing array of structs to function in c

this is my code to try and prinnt out a deck of cards. the print function worked when used inside main without being a function but now i cant get it to work as a function probably since i dont know how to pass a struct array in c. I gave it a shot but i keep getting an assortment of errors. The structure is called card_t and it has a number variable and suit variable which is an enum type.


Code:
 
#include <stdio.h>
#include "shuffle.h"
void print(struct card_t[]);
int main (int argc, char *argv[])
{
        card_t cards[52];
        int i, type;
        int j = 1;
        for (i = 0; i < 52; i++)
        {
                if (j > 13)
                {
                        j = 1;
                }
                if (i < 13)
                {
                        type = 0;
                }
                if (i >= 13 && i < 26)
                {
                        type = 1;
                }
                if (i >= 26 && i < 39)
                {
                        type = 2;
                }
                if (i > 38)
                {
                        type = 3;
                }
                cards[i].number = j;
                cards[i].suit = type;
                j++;
        }
        print(cards);
return 0;
}
void print (struct card_t cards[])
{
        int i;
        for (i = 0; i < 52; i++)
        {
                char *types[4];
                types[0] = "Clubs";
                types[1] = "Diamonds";
                types[2] = "Hearts";
                types[3] = "Spades";
                if (cards[i].number == 1)
                {
                        printf("Ace of %s\n", types[cards[i].suit]);
                }
                else if (cards[i].number == 11)
                {
                        printf("Jack of %s\n", types[cards[i].suit]);
                }
                else if (cards[i].number == 12)
                {
                        printf("Queen of %s\n", types[cards[i].suit]);
                }
                else if (cards[i].number == 13)
                {
                        printf("King of %s\n", types[cards[i].suit]);
                }
                else
                {
                        printf("%d of %s\n", cards[i].number, types[cards[i].suit]);
                }
        }
}


if anyone could please tell me what i can do to let the struct pass into the print function accurately i would greatly appreciate it.

NVM i actually figured it out myself. just had to remove struct from prototype and function def. thanks anyway

Last edited by bjhum33; 04-16-2012 at 06:47 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[BASH - KSH] Passing array to a function

Passing a array to a function, a basic feature in modern language, seems to be only possible in KSH. Not in BASH. Depite all my efforts I couldn't come to a solution. See the following examples: It works perfectly in KSH: #!/usr/bin/ksh function print_array { # assign array by indirect... (3 Replies)
Discussion started by: ripat
3 Replies

2. Shell Programming and Scripting

Passing global variable to a function which is called by another function

Hi , I have three funcions f1, f2 and f3 . f1 calls f2 and f2 calls f3 . I have a global variable "period" which i want to pass to f3 . Can i pass the variable directly in the definition of f3 ? Pls help . sars (4 Replies)
Discussion started by: sars
4 Replies

3. Shell Programming and Scripting

Perl Function Array Arguement Passing

Hi All, I have some questions regarding array arguements passing for Perl Function. If @array contains 2 items , arguements passing would be like Code_A. But what if @array needs to add in more items, the rest of the code like $_ will have to be modified as well (highlighted in red), which is... (5 Replies)
Discussion started by: Raynon
5 Replies

4. Shell Programming and Scripting

[bash] passing array to function

Hi, I'm trying to write a function that reassigns an array to another local array but the method used in reassigning the array reformats the contents of the array which is what I am trying to prevent. The method used to load a file into an array works as expected and the entire array is... (4 Replies)
Discussion started by: ASGR
4 Replies

5. UNIX for Dummies Questions & Answers

Passing struct through unix pipe -solved

EDIT: Nevermind, called a friend who is good at this stuff and he figured it out :D Hi all, So I'm trying to teach myself to write programs for unix in c. I am currently creating a program, and I need to pass a struct through a pipe, but I can't figure out how. The struct I want to pass... (0 Replies)
Discussion started by: twnsfn34
0 Replies

6. Programming

Passing two dimensional array to a function

Hi. I have a problem with passing two dimensional array to a function. First, let me show my code to explain what i am going to do: I have function:void initialize_board(char board);which is supposed to modify content of passed array. I have read here: Question 6.18 how such arrays should be... (3 Replies)
Discussion started by: Shang
3 Replies

7. Programming

Xlib help - Array of Structs

Hey guys! First of all english is not my main language so sorry for any english mistakes. Second im a total beginner in programming, still i have a school work to do and i found a problem. Probably something easy to solve but it's driving me crazy. So i created a struct, that holds 4 ints: ... (1 Reply)
Discussion started by: Spiritvs
1 Replies

8. Homework & Coursework Questions

Xlib help - Array of Structs

Hey guys! First of all english is not my main language so sorry for any english mistakes. Im from Portugal! 1. The problem statement, all variables and given/known data: Im having a problema creating and array of structs for a work i need to do. (xLib) 2. Relevant commands, code,... (1 Reply)
Discussion started by: Spiritvs
1 Replies

9. Shell Programming and Scripting

Pass array to a function and display the array

Hi All I have multiple arrays like below. set -A val1 1 2 4 5 set -A val2 a b c d . . . Now i would like to pass the individual arrays one by one to a function and display/ do some action. Note : I am using ksh Can you please advise any solution... Thanks in advance. (7 Replies)
Discussion started by: Girish19
7 Replies

10. Shell Programming and Scripting

Passing variable value in a function to be used by another function

Hello All, I would like to ask help from you on how to pass variable value from a function that has been called inside the function. I have created below and put the variables in " ". Is there another way I can do this? Thank you in advance. readtasklist() { while read -r mod ver... (1 Reply)
Discussion started by: aderamos12
1 Replies
CRIBBAGE(6)							 BSD Games Manual						       CRIBBAGE(6)

NAME
cribbage -- the card game cribbage SYNOPSIS
cribbage [-eqr] DESCRIPTION
cribbage plays the card game cribbage, with the program playing one hand and the user the other. The program will initially ask the user if the rules of the game are needed - if so, it will print out the appropriate section from According to Hoyle with more(1). cribbage options include: -e When the player makes a mistake scoring his hand or crib, provide an explanation of the correct score. (This is especially useful for beginning players.) -q Print a shorter form of all messages - this is only recommended for users who have played the game without specifying this option. -r Instead of asking the player to cut the deck, the program will randomly cut the deck. cribbage first asks the player whether he wishes to play a short game ( ``once around'', to 61) or a long game ( ``twice around'', to 121). A response of 's' will result in a short game, any other response will play a long game. At the start of the first game, the program asks the player to cut the deck to determine who gets the first crib. The user should respond with a number between 0 and 51, indicating how many cards down the deck is to be cut. The player who cuts the lower ranked card gets the first crib. If more than one game is played, the loser of the previous game gets the first crib in the current game. For each hand, the program first prints the player's hand, whose crib it is, and then asks the player to discard two cards into the crib. The cards are prompted for one per line, and are typed as explained below. After discarding, the program cuts the deck (if it is the player's crib) or asks the player to cut the deck (if it's its crib); in the latter case, the appropriate response is a number from 0 to 39 indicating how far down the remaining 40 cards are to be cut. After cutting the deck, play starts with the non-dealer (the person who doesn't have the crib) leading the first card. Play continues, as per cribbage, until all cards are exhausted. The program keeps track of the scoring of all points and the total of the cards on the table. After play, the hands are scored. The program requests the player to score his hand (and the crib, if it is his) by printing out the appro- priate cards (and the cut card enclosed in brackets). Play continues until one player reaches the game limit (61 or 121). A carriage return when a numeric input is expected is equivalent to typing the lowest legal value; when cutting the deck this is equivalent to choosing the top card. Cards are specified as rank followed by suit. The ranks may be specified as one of: 'a', '2', '3', '4', '5', '6', '7', '8', '9', 't', 'j', 'q', and 'k', or alternatively, one of: 'ace', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'jack', 'queen', and 'king'. Suits may be specified as: 's', 'h', 'd', and 'c', or alternatively as: 'spades', 'hearts', 'diamonds', and 'clubs'. A card may be specified as: ``<rank> <suit>'', or: ``<rank> of <suit>''. If the single letter rank and suit designations are used, the space separating the suit and rank may be left out. Also, if only one card of the desired rank is playable, typing the rank is sufficient. For example, if your hand was ``2H, 4D, 5C, 6H, JC, and KD'' and it was desired to discard the king of diamonds, any of the following could be typed: 'k', 'king', 'kd', 'k d', 'k of d', 'king d', 'king of d', 'k diamonds', 'k of diamonds', 'king diamonds', 'king of diamonds'. FILES
/usr/games/cribbage /var/games/bsdgames/criblog /usr/share/games/bsdgames/cribbage.instr AUTHORS
Earl T. Cohen wrote the logic. Ken Arnold added the screen oriented interface. BSD
May 31, 1993 BSD
All times are GMT -4. The time now is 05:15 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy