To declare a variable, we need a type and a name.
For example, if we are storing test scores ranging from 0 to 100 (ie no negatives), the best fitting data type would be char, specifically, an unsigned char (that would be the type).
unsigned char scores = 0;
As I've mentioned, it is a very good documentation practice to also initialize any declared variables to a sane, known starting value. 0 is an excellent choice for most cases.
To obtain input from the user (via keyboard), we use the fscanf() function, which like fprintf(), utilizes format specifiers.
The format specifier for an unsigned char is %hhu
fscanf (stdin, "%hhu", &scores);
NOTE: the variable we are reading into needs to be provided, or passed, by its address. We can do that with most variables by prefixing the & symbol.
How do we know if input worked? We could, in our debugging, print it back out using fprintf():
fprintf (stdout, "scores: %hhu\n", scores);
The '\n' character is a special character (an escape character) which signifies the newline character (think: enter being pressed).
Largely the same way you do it in math class, only with a few noted constraints:
To add 4 to whatever is in our scores variable:
scores = scores + 4;
Okay, how about taking an average (of four numbers)?
unsigned char num1 = 0; unsigned char num2 = 0; unsigned char num3 = 0; unsigned char num4 = 0; float average = 0.0; // prompt for and accept input fprintf (stdout, "Enter the first number: "); fscanf (stdin, "%hhu", &num1); fprintf (stdout, "Enter the second number: "); fscanf (stdin, "%hhu", &num2); fprintf (stdout, "Enter the third number: "); fscanf (stdin, "%hhu", &num3); fprintf (stdout, "Enter the fourth number: "); fscanf (stdin, "%hhu", &num4); // display the input values fprintf (stdout, "The average of %hhu, %hhu, %hhu, and %hhu is: ", num1, num2, num3, num4); // calculate the average average = (num1 + num2 + num3 + num4) / 4; // display the average fprintf (stdout, "%.2f\n", average);
With most types, placing a number between the % and the value will allocate a fixed amount of space on the screen with which to place the output in (if the number takes up less space than the allocated screen space, if it exceeds, it'll overflow it).
A positive value is right-justified.
A negative value is left-justified.
int value = 17; fprintf (stdout, "eight spaces: >12345678<\n"); fprintf (stdout, "right justified: >%8d<\n", value); fprintf (stdout, "left-justified: >%-8d<\n", value);