integer arrays


 
Thread Tools Search this Thread
Top Forums Programming integer arrays
# 1  
Old 03-09-2002
Question integer arrays

ok, i tried something i did before and i seem to be getting somewhere here. just one problem.
line 100.25: 1506-068 (W) Operation between types "int*" and "int" is not allowed.
Code:
 +93      printf("\nEnter 4 Digit Reference Number:\n");
 +94      scanf("%d",&temp3[count]);
 +95      while(temp3[count]<1000||temp3[count]>9999){
 +96         printf("\nInvalid Option!");
 +97         printf("\nEnter 4 Digit Reference Number:\n");
 +98         scanf("%d",&temp3[count]);
 +99        }
+100      refNumber[count]=temp3[count];

how do i get my number to save inside my integer array? (temp3 is a var int temp3[4])
thanks!
primal
_____________________________

im stuck! this is probably something basic that i just forgot how to do but ive been trying to get this working for a few days now and i cant figure it out. heres the deal:

part of the program im writing prompts the user for a 4 digit number and stores it into int *refNumber[4]. ive passed it to my function call, int insert(char *name[],int *refNumber[], int) but getting the info to store is whats not working. ive tried a few ways, but nothing.
this is how i did it for the name.... (inside a while loop)

printf("Enter clients name:\n");
fflush(stdin);
scanf("%[^\n]",temp);
name[count]=(char *)malloc(strlen(temp)+1);
strcpy(name[count],temp);
temp is a a var (char temp[30])

**reference number code here **

count++;


ive tried strlen, strcpy, sizeof, a few others that i cant recall right now. im completely lost.
would any one be able to help me?
thanks!
primal

p.s. if more code is required let me know

Last edited by primal; 03-09-2002 at 03:31 PM..
# 2  
Old 03-09-2002
The way you are handling the name looks reasonable. You have an array of pointers to char, you calloc just enough space to hold each name, and you return the pointer. But with the name you are dealing with data whose length you cannot predict.

But the length of a 4 digit integer is predictable. And you can store all 4 digits in one int. So you should have an array of ints. You should pass that array to your function. And your function should just store the int in the array.

Your line
int *refNumber[4];
worries me. That is an array with 4 elements. Each element is a pointer to int. You still have no place to store any ints.

Do you really have a need to split the digits up, one per element? If so I would use chars rather than ints.

If i and j are integers, you can copy one to the other with just
i=j;
you don't really want to do something like:
strcpy((char *) &i, (char *) &j, sizeof int);
that's crazy.

If you need more help with this, I would need to how you allocate the data which is passed to the function, and the actual call to the function. If you change the prototype, show the new prototype as well.
# 3  
Old 03-09-2002
oh im saving 1 number per array? thats not good.

"But the length of a 4 digit integer is predictable. And you can store all 4 digits in one int. So you should have an array of ints. You should pass that array to your function. And your function should just store the int in the array"

how do i do that?

thanks!
primal

heres my code, well the bit that pertains to this
Code:
void main(){
     char choice[6], *name[30], ch;
     int num, count=0, *refNumber[4];
     int insert(char *name[],int *refNumber[],int);
     count=insert(name,refNumber,count);
    }

int insert(char *name[],int *refNumber[],int count){
    int i, temp3[4];
    char temp[30],choice[5];
    printf("\nDo you want to enter client data?\n");
    fflush(stdin);
    scanf("%[^\n]", choice);
    for(i=0;choice[i]!='\0';i++){
       choice [i] = toupper(choice[i]);
      }
    while((!(strcmp(choice,"YES")==0) && !(strcmp(choice,"NO") == 0))){
       printf("\nInvalid option!\t \"yes\" or \"no\"\n");
       fflush (stdin);
       scanf("%[^\n]", choice);
       for(i=0;choice[i]!='\0';i++){
          choice [i] = toupper(choice[i]);
         }
      }
    while(strcmp(choice, "YES") ==0){
       fflush(stdin);
       printf("\nEnter Client Name:\n");
       fflush(stdin);
       scanf("%[^\n]", temp);
       name[count] = (char *) malloc (strlen(temp) + 1);
       strcpy (name[count], temp);

    printf("\nEnter 4 Digit Reference Number:\n");
    scanf("%d",&temp3[count]);
    while(temp3[count]<1000||temp3[count]>9999){
       printf("\nInvalid Option!");
       printf("\nEnter 4 Digit Reference Number:\n");
       scanf("%d",&temp3[count]);
      }
    refNumber[count]=temp3[count];

       count++;
       printf("\nDo you want to enter data for another client?\n");
       fflush(stdin);
       scanf("%[^\n]", choice);
       for(i=0;choice[i]!='\0';i++){
          choice [i] = toupper(choice[i]);
         }
       while((!(strcmp(choice,"YES")==0) && !(strcmp(choice,"NO") == 0))){
          printf("\nInvalid option!\t \"yes\" or \"no\"\n");
          fflush (stdin);
          scanf("%[^\n]", choice);
          for(i=0;choice[i]!='\0';i++){
             choice [i] = toupper(choice[i]);
            }
         }
      }
    return count;
   }

# 4  
Old 03-09-2002
You are not checking for overflowing your arrays. I put that in. It's the LISTMAX stuff and a slight mode to your scanf's. I didn't like the way you passed count into your function. So I did that a little differently. And I added a few statements to print out the arrays to be sure that it was working.

You will want to bump up LISTMAX, I made it low for easy testing...

Here is my modified code...
Code:
#include <stdio.h>

#define LISTMAX 3

void main(){
    char *name[LISTMAX], ch;
    int num, count, refNumber[LISTMAX];
    int i;
    int insert(char *name[],int refNumber[]);  
    count=insert(name,refNumber);
    printf("count = %d \n", count);
    for(i=0; i<count; i++) {
        printf("%30s  %d\n", name[i], refNumber[i]);
    }
    exit(0);
}

int insert(char *name[],int refNumber[]){ 
    int count;
    int i, temp3[4];
    char temp[30],choice[5];
    count=0;
    printf("\nDo you want to enter client data?\n");
    fflush(stdin);
    scanf("%5[^\n]", choice);
    for(i=0;choice[i]!='\0';i++){
        choice [i] = toupper(choice[i]);
    }
    while((!(strcmp(choice,"YES")==0) && !(strcmp(choice,"NO") == 0))){
        printf("\nInvalid option!\t \"yes\" or \"no\"\n");
        fflush(stdin);
        scanf("%5[^\n]", choice);
        for(i=0;choice[i]!='\0';i++){
            choice [i] = toupper(choice[i]);
        }
    }
    while(strcmp(choice, "YES") ==0){
        printf("\nEnter Client Name:\n");
        fflush(stdin);
        scanf("%30[^\n]", temp);
        name[count] = (char *) malloc (strlen(temp) + 1);
        strcpy (name[count], temp);

        printf("\nEnter 4 Digit Reference Number:\n");
        fflush(stdin);
        scanf("%4d",&temp3[count]);
        while(temp3[count]<1000||temp3[count]>9999){
            printf("\nInvalid Option!");
            printf("\nEnter 4 Digit Reference Number:\n");
            fflush(stdin);
            scanf("%d",&temp3[count]);
            }
        refNumber[count]=temp3[count];

        count++;
        if (count == LISTMAX) {
            printf("tables are full\n");
            return LISTMAX;
        }
        printf("\nDo you want to enter data for another client?\n");
        fflush(stdin);
        scanf("%[^\n]", choice);
        for(i=0;choice[i]!='\0';i++){
            choice [i] = toupper(choice[i]);
        }
        while((!(strcmp(choice,"YES")==0) && !(strcmp(choice,"NO") == 0))){
            printf("\nInvalid option!\t \"yes\" or \"no\"\n");
            fflush(stdin);
            scanf("%[^\n]", choice);
            for(i=0;choice[i]!='\0';i++){
                choice [i] = toupper(choice[i]);
            }
        }
    }
    return count;
}

# 5  
Old 03-09-2002
thank you so much!
im going to look over your code right now.
primal
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Are These All The Integer Types In C

Hello and Good day, I am currently studying C and I just finished learning about variables mainly those of integer type. I am wondering if the list below are all there is to integer variables and there are still more that i have to learn. Here are the list: Char Short int long long long... (3 Replies)
Discussion started by: split_func0
3 Replies

2. Shell Programming and Scripting

how to compare string integer with an integer?

hi, how to I do this? i="4.000" if ; then echo "smaller" fi how do I convert the "4.000" to 4? Thanks! (4 Replies)
Discussion started by: h0ujun
4 Replies

3. Shell Programming and Scripting

Convert to Integer

Hi fellows!! i'm doing something which is not working out for me properly which i don't understand why nowdate=`date +%s` echo $nowdate now the problem how to convert a date which is stored in a variable mydate="22/Oct/2011" mydate=`date -d '$mydate' +%s` it gives error... (11 Replies)
Discussion started by: me_newbie
11 Replies

4. Solaris

How to Use a Variable as Integer?

hello, i am writing a script that takes the UID from the PASSWD and then i want to increse the Number by one. for the Next user. i cannot get this to work that a variable is as interger example: set i = 0 set $i = $+1 it's in tcsh if it's mather (10 Replies)
Discussion started by: shatztal
10 Replies

5. Programming

question about int arrays and file pointer arrays

if i declare both but don't input any variables what values will the int array and file pointer array have on default, and if i want to reset any of the elements of both arrays to default, should i just set it to 0 or NULL or what? (1 Reply)
Discussion started by: omega666
1 Replies

6. UNIX for Dummies Questions & Answers

integer to string

Hi all, is there an easy way to convert integer to string in bash? I have numbers like 1, 2, ..., 112, ... and I would like to get 001 002 003 004 ... Thank you, Sarah (4 Replies)
Discussion started by: f_o_555
4 Replies

7. UNIX for Dummies Questions & Answers

Non-integer caluclations

Hey I am trying to calculate a number but I found out the expr I knew works only with integers. Any help. I want to calculate (120/220) *100. Thanks! (2 Replies)
Discussion started by: #moveon
2 Replies

8. Web Development

PHP arrays in arrays

PHP question... I have an SQL query that's pulled back user IDs as a set of columns. Rather than IDs, I want to use their names. So I have an array of columns $col with values 1,7,3,12 etc and I've got an array $person with values "Fred", "Bert", "Tom" etc So what I want to do is display the... (3 Replies)
Discussion started by: JerryHone
3 Replies

9. UNIX for Dummies Questions & Answers

Rouding off an integer

HI I want to round off an integer to the next multiple of 10 in shell script. (i.e.,) 91 should be rounded off to 100 and 90 should be rounded off to 90 It would be very helpful, if you can help me in this. Thanks in advance (4 Replies)
Discussion started by: dayamatrix
4 Replies

10. Shell Programming and Scripting

increment an integer

hi I want to echo the variable $i while it auto-increments till 21 I set initially i to 1 any idea how to do that? thank you (4 Replies)
Discussion started by: melanie_pfefer
4 Replies
Login or Register to Ask a Question