How to Assign Inputs as Addresses in C Programming?

  • Thread starter Thread starter akueddy
  • Start date Start date
  • Tags Tags
    Arrays Pointers
AI Thread Summary
The discussion centers around a beginner's experience with C programming, specifically focusing on pointer usage and array management. The user has written a basic program that assigns values to an array and retrieves them based on user input. However, they encounter a warning about an unused pointer assignment and an issue with using an uninitialized variable. The conversation highlights the importance of validating user input to prevent errors, especially when dealing with arrays. Suggestions are made for initializing larger arrays, either by manually assigning values or using loops.Additionally, the user expresses their ambition to develop a program for an ignition system that calculates spark timing based on engine speed. They seek clarification on the differences between standard C code and the specific instructions used for programming PIC microcontrollers, as well as guidance on progressing with their project, particularly in calculating RPM. The discussion emphasizes the need for understanding both C programming fundamentals and the specific requirements of embedded systems programming.
akueddy
Messages
14
Reaction score
0
Hi guys,

***I just started c programming, I've done some reading last week and i came up with a basic program.Ive got a problem trying to assign an input as an adress to a specified value.Basically i have 3 datas in my array and it will be called by inputting a number which points to the adress.

***Here's the program that i wrote :


#include <stdio.h>


void main()
{

int n;

int Array[3];
Array[0] = 10;
Array[1] = 20;
Array[2] = 30;

int *pArray;

pArray = &Array[n];

printf("choose a number 0-2\n");
scanf("%d", &n);

pArray = &Array[n];

printf("because you choose that number ill give you : $%d\n",*pArray);
}

-------------------------------------------------------------------------------------

***Although there's an error message, the program runs just fine...


C:\Borland\BCC55\Bin>bcc32 pointers4
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
pointers4.cpp:
Warning W8004 pointers4.cpp 16: 'pArray' is assigned a value that is never used
in function main()
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

C:\Borland\BCC55\Bin>pointers4
choose a number 0-2
2
because you choose that number ill give you : $30

C:\Borland\BCC55\Bin>

--------------------------------------------------------------------------------------


***here's my question :

1) Can someone explain to me what's the warning all about and how to correct it? i though i have assign a value for 'pArray' according to the user's input.
2) What if i want to have a really large amount of datas stored in my array, let's say 100 datas. Is there any simple way of doing it say :

Array[10,20,30,40,50,60,70...1000]?
 
Technology news on Phys.org
  1. You're assigning to pArray and then assigning to it again without using the value you first assigned to it. Furthermore, you're using n before it's been initialised, which you should never do.
    [*]There are two ways of doing this. You could either assign them each individually:
    Code:
    int array[] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
    …or if there are loads, you could use a for loop:
    Code:
    int array[100];
    for (int i = 0; i < 100; i++)
    {
        array[i] = i = array[(i + 1) * 10];
    }
 
Maybe your problem is not exactly the real problem of your program.
The biggest problem of your program exists here:
Code:
scanf("%d", &n);
Because you haven't checked the value of the input.
No one can guarantee the the input value is of type int and in the range of 0~2.
That means if the input value is not 0~2 or not even a int value, there may be some
severe errors occurrence.
 
1) Inquisitus

Id prefer this one cause my actual array size is going to be about 100 and the values are not predictable although it is increasing.

int array[] = { 13, 21, 35, 41, 51, 63, 74, 81, 99......1000 };

2) shwx

The program that i want to write is for an ignition system where depending on the speed of the engine, i will assign a suitable time of spark. So ill assume my input is going to be either on or off and depending on the "on time", i can calculate the speed,it will then points to an address which is the time of spark. Its really an ambitious thing to do for a beginner but i decided to do it anyways.

***new question***

Eventually ill need to apply my c code to program a PIC. I am using Wiz-c as my compiler because i find that its quite easy to visualize what's happening when the code is compiled and simulated. I don't know if this is too elaborate, i hope someone can help me :

1) What is the difference between typical c code (standard stuff such as prinf,scanf) and the ones used on a pic (movlw,movwf,trisa,trisb). I was learning C and PIC code separately and i didnt know that it can be combined(see link for further details). Is the ones on the pic is just an extension of c codes needed in order to make the PIC working?

2) Can anyone give me some tips on how to progress from here on? I am quite confuse on how to write a code to calculate the rpm, there are some examples on the web on a DIY CDI but i just don't understand the logic..

code.http://www.sportdevices.com/ignition/ignition.c"
 
Last edited by a moderator:
Thread 'Is this public key encryption?'
I've tried to intuit public key encryption but never quite managed. But this seems to wrap it up in a bow. This seems to be a very elegant way of transmitting a message publicly that only the sender and receiver can decipher. Is this how PKE works? No, it cant be. In the above case, the requester knows the target's "secret" key - because they have his ID, and therefore knows his birthdate.
I tried a web search "the loss of programming ", and found an article saying that all aspects of writing, developing, and testing software programs will one day all be handled through artificial intelligence. One must wonder then, who is responsible. WHO is responsible for any problems, bugs, deficiencies, or whatever malfunctions which the programs make their users endure? Things may work wrong however the "wrong" happens. AI needs to fix the problems for the users. Any way to...
Back
Top