all right what's going on everybody it's
you bro hope you're doing well and in
this video i'm going to explain how we
can get started writing code in c so sit
back relax and enjoy the show
if you wouldn't mind please like comment
and subscribe one like equals one prayer
for the youtube algorithm
i'm going to tell you why you need to
learn c c is a middle level language
that originated in the 1970s and it is
one of the most widely used programming
languages to date on a spectrum of
high-level languages to low-level
languages c is a middle level language
low-level languages are efficient they
work closely with machine architecture
they consume less memory and they're
fast as however they're difficult
to understand and it takes more time to
write code that's in a low level format
high-level languages are easier to work
with easier to understand they allow for
more abstraction but they're slower they
use more memory and they're abstract so
it's difficult to work with low level
hardware and systems a major advantage
of middle level languages is that they
can act as a bridge between high-level
software and applications as well as
low-level hardware and embedded systems
most compilers kernels and operating
systems are written in c
nearly all programming languages are
influenced by c in some way c is what
provided many of the original
programming concepts such as variables
data types loops arrays functions etc in
fact the python language is written with
c the default implementation is known as
c python if you're already familiar with
the programming language learning c will
give you an even deeper understanding of
how those operate c is literally
everywhere from databases to
self-driving cars operating systems to
embedded systems it's been around for so
long and used for so many purposes here
are some important notes before we get
started c is not an object-oriented
language it's procedural not abstract c
plus plus is an object-oriented
extension of c if you know c you already
know some c plus plus however c is a
difficult language for beginners don't
get discouraged you can do it so what
you'll need you'll need an ide an
integrated development environment which
is basically a fancy text editor to help
us write c code as well as a gnu
compiler collection which we abbreviate
to simply gcc this compiles or otherwise
converts c code to machine code you know
all those ones and zeros that a machine
can read let's begin by downloading an
ide i recommend vs code it's flexible
and you can use vs code for more than
just c
all right what you're gonna do is head
to code.visualstudio.com
and then look for this drop down menu to
install for your operating system i'm
running windows i'm going to install for
windows and then i will simply just open
when done
okay accept the license agreement next
you can create a desktop icon and add to
path next
then install
and then give it a second
or a couple minutes
then you can launch this if you prefer i
think i will okay we are now within
visual studio head to the left hand menu
for extensions we're going to install
two extensions c
c plus plus that contains intellisense
and a couple other useful things so
install that
and then next we will install code
runner code runner
install after installing these
extensions you may need to restart vs
code
okay then we are going to add a new
folder go to the left-hand menu add
folder i'll create a new folder on my
desktop so i'll right click go to new
folder
i'll name this c files
then add
i think you might have to click within
the folder
okay we now have a folder named c files
then to create a new c file go to new
file after clicking this folder
i'll name this hello world and make sure
that it ends with the c extension
helloworld.c
and we now have a c file that we can
work with and on this tab at the top
this says hello world dot c now the next
thing that we'll need is that gcc
compiler to convert c code to machine
code now if you're running windows this
is how to check to see if you have a gcc
compiler already installed
so you're going to open command prompt
and enter this command g plus plus
dash dash version i already have a gcc
compiler already installed if you're
getting an error then you'll probably
have to download one here's an
interruption from future bro i traveled
from the future to the past to deliver
you this message so if you need to
install gcc on a mac operating system
what you're going to do within a
terminal window is enter the following
command c lang dash dash version if c
lang isn't installed enter the following
command xcode dash select dash dash
install and that's all there is to it if
you need additional assistance you can
always visit this webpage
code.visualstudio.com
docs slash cpp and if you're running on
linux within a terminal window you'll
enter this command instead gcc
dash v if gcc isn't installed run this
command
sudo apt-get update and then next type
in this long command and if you need any
additional assistance or documentation
you can always visit this webpage so
google this min gw dash w64
install.exe and the first link is for
sourceforge so click on that
then you can find this underneath home
browse development compilers
mingw64 for 32 and 64-bit windows and
the download should start automatically
so click next
change the architecture to
x8664
next and then copy this path for the
destination folder it's going to be
relevant later
then next next and finish
now what we're going to do is add our
path to our gcc underneath environment
variables so open up control panel
then go to system and security
then system
scroll down to advanced system settings
underneath the advanced tab
go to environment variables
underneath path we are going to edit i
already have this path configured so i'm
going to delete this you probably won't
have this setup and then new
paste that file path to the gcc compiler
then add slash min 64 slash bin then
okay
okay
and then you can close out of everything
and now we need to configure our build
task so go to a terminal
your default build task if nothing
appears within the search box you may
need to restart vs code i think i do
so i'm going to restart it
and then let's try that again terminal
configure default build task and there
it is i will select that
this creates a json file that tells vs
code how to compile the program and with
that out of the way we can begin coding
now before we do start coding anything
i'm going to increase the font size
because as you can see this font size is
really small so within vs code to change
the font size go to file preferences
settings and you can change that here
let's try maybe 20. you can also change
the font family too if you want and
everything
uh but let's close out of that and try
that again
okay that isn't too bad i'll stick with
this font size for now i also recommend
enabling autosave that's going to save
you a lot of headaches later in the
future so go to file
auto save
okay the first thing that we're going to
include within our c program is the word
hashtag include
so this is a pre-processor command that
tells the compiler to include the
contents of a file and the file that we
would like to include is within angle
brackets
std for standard io input output dot h
this file contains some useful functions
related to input and output so we'll
need that
now the entry point of our program is
the main function type int
main parentheses curly braces anything
within our main function is read
procedurally starting from the top and
working its way down so anything within
this set of curly braces is within the
main function and at the end of our main
function we're going to add the
statement return 0 semicolon a semicolon
is used to terminate statements kind of
like a period at the end of a sentence
at the end of our main function we have
this return zero statement this returns
the exit status of our program we return
a zero if our program runs successfully
with no errors if there is an error then
we'll return a 1. so now we can add
anything that we want within this main
function but we'll need return 0 at the
end to check for any errors
so let's print something to our console
as output so to display something we're
going to type print f parentheses
semicolon because we end our statements
with a semicolon and within the
parentheses add a set of double quotes
because we would like to literally print
something and you can type in whatever
you want let's say
i like pizza
then to run this code you can either
right click then go to run code
alternatively there is a run code button
in the top right corner of the s code so
after running this code this displays my
output i like pizza so what if i would
like to add a second line well i would
just follow these steps again so i need
another printf statement
print f parentheses semicolon any text i
would like to display i'll place that
within a set of double quotes this time
let's add a second line i like pizza
it's really
good
and then save
all right and this is what this looks
like
i like pizza it's really good so this is
all one long line what if i would like
my second line of text on the next line
well i can add an escape sequence for a
new line character so at the end of my
printf statement within the double
quotes i'll add
backslash n for a new line character
and let's try that again so i'm going to
clear my output make sure i save and
then run this again
i like pizza it's really good and then
we have that extra space at the bottom
because we added an additional new line
character which is optional
also take notice too that we have this
message exited with code equal zero so
if there are no errors and your program
runs successfully this function will
return zero if there is an error well
then this will return one so let's
misspell something let's say instead of
printf we just have print
so save and then run this again
okay it looks like we have an error
exited with code equals one
all right people well that's your first
c program in the next video we'll cover
escape sequences and comments i'll post
this code to the comments section down
below and pin it to the top if you would
like a copy for yourself but yeah that
is your first c program
hey you yeah i'm talking to you if you
learned something new then help me help
you in three easy steps by smashing that
like button drop a comment down below
and subscribe if you'd like to become a
fellow bro
[Music]
all right everybody welcome back in this
video i'm going to show you all how we
can compile and run a c program using
command prompt in my text editor i have
a simple c program that prints i love
pizza it's really good what we'll need
to do is open command prompt now before
we begin we should make sure that we
have a gcc compiler and to check that
just type gcc
minus minus version
and it looks like i have one so if
you're missing a gcc compiler check the
first video in the series and i'll show
you how to download one now step one to
compiling a c file is that we need to
change our active working directory so
that it's pointing to the folder
containing our c file an easy way to
change that is that we need the file
location so i'm going to right click on
my c file go to properties copy this
location and within command prompt i
will type cd to change directory and
then paste that location so our current
active directory is pointing to that
folder containing our c file and to
compile a c file you type
gcc
the name of the file
and mine is hello world dot c then hit
enter so nothing appears to happen and
that's good so let's take a look at the
c folder again this is the file that we
compiled it is an executable and all we
have to do is run that so that is the
third step a
exe enter
i love pizza it's really good so yeah
that's how to compile and run a c file
in command prompt first make sure that
you have a gcc compiler that would be i
guess step zero step one is to change
the active working directory to the
folder containing your c file compile
the c file with gcc the name of the file
and then run the compiled file a.exe so
yeah that is how to compile and run a c
file with command prompt if you found
this video helpful please be sure to
smash that like button leave a random
comment down below and subscribe if
you'd like to become a fellow bro
hey y'all what's going on everybody it's
you bro hope you're doing well and in
this video i'm going to explain to both
comments and escape sequences in c so
sit back relax and enjoy the show
all right welcome back so we have to
discuss comments and escape sequences so
a comment is some text that is ignored
by the compiler that is used as an
explanation description or a note for
yourself or anyone else reading over
your code so try to comment you will
type
two forward slashes then anything
afterwards is considered a comment and
will be ignored by the compiler this is
comment
blah so if i was to run this
this text will be ignored by the
compiler and we do not see that as
output i tend to use a lot of comments
when explaining things so this is
something you'll see fairly often in my
videos now if you need a multi-line
comment this is only for a single line
comment if i was to type this again
without those forward slashes this is a
comment well our program thinks that
this is some sort of code if we need a
multi-line comment you will instead type
forward slash asterisk then anything
after is considered a comment you can
see that this is all green now anything
up to a asterisk and forward slash will
be a multi-line comment
this
is a
multi-line
comment
and again this is ignored by the
compiler so if you need to write a note
description or explanation for yourself
or for somebody else you can write that
within a single line comment or a
multi-line comment and i use a lot of
these for teaching purposes because i
have a lot of explaining to do right
okay let's move on to part two of this
video we have escape sequences an escape
sequence is a character combination
consisting of a backslash followed by a
letter or combination of digits they
specify actions within a line of text
otherwise known as a string so we
learned in the last video that we can
end our printf statement with a
backslash n to create a new line this is
the escape sequence for a new line and
within a string of text a line of text
and within a string of text we can add a
new line wherever we want and as many as
we want let's say that after each word
within my line of text i would like to
add each word to a new line so i can use
the escape sequence for new line after
each of these words so that would look
like this i like pizza but you may have
to work on the spacing though
that's a little bit better so wherever
you place a backslash n that will create
a new line character another escape
sequence is backslash t for a tab
so let's say i have a few numbers here
one two three and i would like to create
even spacing between these numbers i can
just add an escape sequence for a tab
character one backslash t two backslash
and these numbers are spaced evenly
or i can get really fancy and add a new
line character
then maybe a four
tab five tab
six new line character
then maybe a7
tab 8
tab and then a 9.
so now we have a grid of numbers all
spaced evenly so that is the new line
escape sequence and the tab escape
sequence you can use them wherever and
however many you want within a string of
text within a printf statement what if
we need to display quotes like we're
quoting somebody
i like pizza
this is a quote from
abraham
lincoln
probably i need to place quotes around i
and pizza
so if i were to write it like that well
our program doesn't know where our
string of text begins and ends it's kind
of confused if we need to literally
print double quotes we will add an
escape sequence
backslash then double quote
and then add that here as well so this
allows us to literally print some quotes
as i'll put
i like pizza abraham lincoln probably or
if you need to display single quotes
backslash single quotes
so that's how to display single quotes
and if you need to display a backslash
that would be double backslashes
this will literally print backslashes
so yeah those are just a few escape
sequences here's a list of a bunch of
them but a lot of these really aren't
going to be relevant to us so yeah those
are comments and escape sequences and
see if you found this video helpful
please be sure to destroy that like
button drop a random comment down below
and subscribe if you'd like to become a
fellow bro
hey yeah it's you bro hope you're doing
well and yeah we're doing stuff with
variables today in c so sit back relax
and well enjoy the show
welcome back to another video so
variables variables are allocated space
and memory to store a value we refer to
a variable's name to access the stored
value
that variable now behaves as if it was
the value that it contains but to create
a variable we first need to declare a
name for a variable and then precede it
with the type of data that we are
storing creating a variable is done in
two steps declaration and initialization
so we need to first declare a variable
to allocate some space in memory to
store a value so we need to precede our
variable name with the data type of what
we plan on storing within this variable
if i need to store a whole integer we
would precede our variable name withint
int for integer and let's say that this
is variable x
so this step is declaration we are
creating space and memory to store a
value and to actually store a value that
step is initialization so we would take
our variable name
x in this example and set it equal to
some value so we declared that this
variable is an integer we can only store
whole integers maybe the number one two
three
so this is
initialization or you could combine
these steps together and let's create
into y into y equals 3 2 1. this is both
declaration and initialization so
creating and storing a variable takes
two steps declaration and initialization
and in order to create a variable you
have to precede the variable name with
the data type of what you plan on
storing within that variable int for a
whole integer but there's other data
types too let's create some more
variables what about int age with
variable names you're not limited to
only just x and y you can really name it
whatever you want within some
limitations but make sure that the
variable name is descriptive of what it
does so age is going to store an edge
let's say that i am 21 years old so this
is an integer a whole number if we need
a number containing a decimal portion
that would be a float for floating point
number so one example of a variable that
could contain a floating point number is
a gpa grade point average let's say that
my grade point average is a
2.05 so this is a floating point number
it's a number that contains a decimal
portion we can also store single
characters with the char data type like
you're pronouncing charizard and this
will be a letter grade let's say now to
store a single character we have to
place it within single quotes when we
initialize it with my grade variable
what about a c like my average grade is
a c remember everybody c's get degrees
so char stores a single character
now c isn't an object-oriented language
so there is no string data type because
strings are technically objects so if we
would like to store like somebody's name
we need a series of characters so we can
create what is called an array and to
create an array we would follow our
variable name with a set of square
brackets and then assign this equal to
some string of text some series of
characters place your series of
characters within double quotes and we
can store more than one character so
this data type would be technically an
array of characters i'll create a whole
separate video on arrays this is
basically how you can emulate a string
it's really just a whole combination of
single characters there's still a lot
more data types than just these four i
thought i would cover just some of the
more basic data types just because in
this video we're going to focus more on
variables than data types i'm planning a
separate video just dedicated to data
types because there's way more data
types than just these four there's bytes
there's doubles there's longs etc now
how can we display the value stored
within a variable within a printf
statement here's how we have to use what
is referred to as a format specifier
let's say we have a printf statement
and i would like to display my age
within a message so let's create some
text you are
age years old if i would like to display
the value contained within my edge
variable wherever i would like to insert
that value i will place a format
specifier which is represented by a
percent sign and then follow this with a
secret character that represents the
data type of what we're inserting so if
i need to display my age variable i will
use a percent sign as a placeholder
followed by d for decimal and then after
my string of text outside of the double
quotes add comma then the name of the
variable you would like to insert at
this placeholder so at this location i
will insert age and then let's try this
you are 21 years old so let's try that
again with a different variable let's
say let's go with name
i'll add a second printf statement print
and then let's say hello
and i would like to insert my name here
so use a percent sign as a placeholder
it's a format specifier then to display
a character array that would be s for
string
and then add comma
name
oh then we may need to add a new line
character to the end of these because i
forgot let's try that again
hello bro you are 21 years old okay
let's display our
grade printf
then within quotes
your average
grade
is
then to display a character variable
that would be percent c for character
then outside of our double quotes add
comma the name of the variable we would
like to insert at this location so comma
grid
i think i'm just going to space these
out a little bit
okay then i will add a new line
character to the end of this
okay hello bro you are 21 years old your
average grade is c
then to display a float that would be
percent f
print f
your gpa
is
percent f
then i'll add a new line character
so follow this with comma the name of
the variable gpa
okay your gpa is 2.05
so later on we'll discuss more about
format specifiers there's ways that we
can format how our variables are
displayed i just realized that i
misspelled average twice so yeah those
are variables they are allocated space
and memory to store a value we refer to
a variable's name to access the stored
value
that variable now behaves as if it was
the value that it contains
but to declare a variable we have to
state what type of data that we are
storing within that variable so yeah
those are variables if this video helped
you out help me out by smashing that
like button leave a random comment down
below and subscribe if you'd like to
become a fellow bro
all right what's going on people let's
discuss more about data types we
discussed a few in the last video but
there's a few more that you should be
made aware of so chars they store a
single character and use the percent c
format specifier to display a single
character there's an array of characters
which can store one or more characters
then to display that you use percent s
as the format specifier floats they will
store a decimal number and we use the
percent f format specifier to display a
floating point number and then we have
integers which only store a whole
integer there is no decimal portion and
we use percent d to display an integer
now along with floats we have doubles
doubles have double the precision of a
float we can store even more significant
digits floats use four bytes of memory
they have 32 bits of precision and we
can store between six to seven
significant digits doubles they have
eight bytes of memory double that of
floats and they have 64 bits of
precision and we can store between 15 to
16 significant digits with my float and
my double i'm storing the first several
digits of pi i'm going to attempt to
display as many digits of pi as i can
with a float so i'm going to display
these so to display a float use percent
f and lf for a double which means long
float now by default when i use printf
to display a floating point number or a
double this will only display the first
six to seven digits but we can actually
change that we'll discuss more about
these in the next video on format
specifiers if i would like to display
even more digits after the decimal i
will add zero point and the amount of
digits i would like to display so i
would like to display 15 digits after my
decimal and i'll do that for my double
as well so after the percent signed 0.1
f then add lf and let's take a look at
these numbers okay after my two which is
i believe the sixth digit after the
decimal we actually lose our precision
these numbers are not the same but our
double will actually retain these
numbers so point being a double is even
more accurate than a floating point
number there is more precision but it
uses more memory a double uses eight
bytes of memory because of this reason
we tend to use doubles a lot more than
floats just because they're more precise
we don't want to lose our precision next
up we have booleans to work with
booleans and c include this at the top
std bool.h booleans store true or false
so they work in binary one represents
true and zero represents false so when
you need to declare a boolean variable
you type bool then a variable name and
you set it equal to true or false
technically we only need one bit to
represent true or false one for true and
zero for false but this still uses up
one byte of memory and then to display a
boolean you can use percent d so if i
was to display this boolean variable i
would use percent d so one corresponds
to true and zero corresponds to false
although there are some tricks that we
can do in the future where we could
display the word to true or the word
false but for now we're going to stick
with percent d as the format specifier
so these work in binary one for true
zero for false now another thing that we
can do with chars is that we can store a
whole integer between the range of
negative 128 to positive 127. so in this
example we have char f and i will store
the integer number 100 we can display
this number as either a decimal an
integer or a character so if i was to
display this number as a character we
will use the ascii table to convert this
number to a character representation the
ascii table has a range between 0 to 127
so if i was to display this number as a
decimal using the percent d format
specifier of course this will display as
100 but if i was to convert this to a
character using the percent c format
specifier this has a corresponding
character and that would be lowercase d
so i'm actually going to change this to
something else what about i don't know
uh 120 so let's see what the character
representation of that number is and
that would be
a lowercase x so you can use chars to
store more than single characters you
can also use them to store a whole
integer however the range is between
negative 128 to positive 127 because
they have one byte of memory now there
is a keyword unsigned so when you
declare a variable that is unsigned we
disregard any negative numbers so
effectively this doubles our range with
our positive numbers so if we have
unsigned char we can store a number
between 0 to positive 255 because we
know we're not going to store a negative
number so then if you need to display an
unsigned character we can use just
percent d i'm going to store 255 within
my unsigned chart and that would be of
course 255. however if we go beyond this
range this will overflow and go back to
zero
so if i was to display this we have a
warning unsigned conversion from int to
unsigned chart so then this resets back
to zero so if you go beyond the maximum
range this will reset all the way back
to zero whatever the beginning is so if
you add this keyword unsigned you can
effectively double the range of positive
numbers that you can store within a
variable by default most data types are
already signed but we don't need to
explicitly type that so point being with
chars you can store more than a single
character you can store a whole integer
between ranges negative 128 to positive
127 if it's signed if it's unsigned you
can store numbers between 0 to 255. you
can display them as an integer by using
the percent d format specifier or you
could convert them to a character using
the ascii table by using the percent c
format specifier next we have short
hints short ins use two bytes of memory
they can store a number between negative
32
768 to positive 32
767 because while they use two bytes of
memory they can only store a number so
large and if it's an unsigned short int
the range is instead between 0 to 65 535
and we use the percent d format
specifier to display a short in so
within my printf statement i'm going to
display these two numbers so i will
display variable h and i h is a short
integer and i is an unsigned short
integer
so these are the maximum values for a
short integer and an unsigned short
integer and like i discussed with chars
if we go beyond this range we will
encounter an overflow so i'm going to
change this short end to 32768
and let's see what number displays
so this will overflow and reset this
value back to the minimum value which in
this case is negative 32
768 and if you do the same thing with
the unsigned short integer that would be
zero because that's the minimum value
for an unsigned short integer so those
are short integers they use two bytes of
memory and they can store numbers
between these ranges depending if it's
signed or unsigned oh and another way of
writing these you don't necessarily need
to declare these with the word and you
could just say short and that would do
the same thing people usually just call
them shorts instead of short ants so
those are what shorts are now with
integers we kind of discussed this in
the last video just briefly integers
store a whole number between just under
negative 2 billion to just over positive
2 billion because they use 4 bytes of
memory and we use the percent d format
specifier to display a signed integer if
that integer is unsigned the range
changes from 0 to just over positive 4
billion however there is a different
format specifier to display an unsigned
integer you instead use percent u so
then let's display these percent d for a
signed integer and percent u for an
unsigned integer
and these are the maximum numbers and
then if i was to exceed the range
this again would cause an overflow and
reset these numbers back to their
minimum values so those are standard
integers they use four bytes of memory
so they can store numbers between these
ranges depending if they're signed or
unsigned all right the last data type
we're going to talk about for this topic
is a long long integer now the reason
that we have long twice is that with
standard integers these are already
considered longs but we don't need to
explicitly type long for standard
integers so to represent a really large
number we can use a long long integer
and these use eight bytes of memory the
effective range for a signed long long
integer is just underneath nine
quintillion to just over nine
quintillion and the format specifier for
a long long integer one that is signed
is percent lld
now if it's unsigned that changes the
range between zero to just over positive
18 quintillion and the format specifier
is percent llu then let's display these
so
for a signed long long integer that is
lld and if it's unsigned that is llu now
we'll encounter a warning
so this warning applies to our unsigned
long long integer
integer constant is so large that it is
unsigned so one way in which we can
prevent that warning is after our number
within our unsigned long long integer
add a u to the end of this so then we
can display this number with no warning
so since long long integers use so many
bytes they can store a gigantic number
we tend to not use long long integers
very often because well we don't really
have a need for this large of a number
but in certain circumstances you might
perhaps you're dealing with the speed of
light or something you may need to use a
long long integer but commonly we use
standard integers a lot more well yeah
everybody those are even more c data
types we likely won't be using most of
these but you should still be made aware
of their existence i would say that
we're going to focus on chars array of
chars
doubles booleans
and integers so pay attention to those
ones but you should still be made aware
of the existence of other data types
just in case you encounter them if you
found this video helpful please smash
that like button leave a random comment
down below and subscribe if you'd like
to become a fellow bro
all right welcome back everybody in this
video i'm going to show you while a few
extra things that we can do with format
specifiers using a format specifier
within a printf statement we can define
and format a type of data to be
displayed to use a format specifier you
use a percent sign then follow that
percent sign with a certain character
depending on the type of data you would
like to display let's say that we have
three variables maybe we have an online
store or something like that so let's
say that these are of the float data
type and we'll have three items for sale
item one and make up some price let's
say that the first item is five dollars
and seventy five cents
and we have item two
and this will be ten dollars even and
then we have item three and this will be
one hundred dollars and ninety nine
cents so let's display item one item two
in item three with a print f statement
print f and within a string let's say
item one colon space then i'll add a
dollar sign wherever you would like to
insert a value or variable you will use
that format specifier the percent sign
so after my dollar sign i'll add item
one so that would be percent then for
floats you need f and then after the
string add comma
item one then let's just make sure that
this works so we're going to be
formatting this output what if we don't
want all the zeros we can set the
decimal precision of a float or double
after the format specifier add a dot and
the amount of digits you would like to
display if i would only like to display
two digits after the percent i will add
point two and this will only display two
digits for the amount of cents that we
owe okay now let's do the same thing for
items two and three so item two
item two
item three
item three
okay then let's add a new line character
because i forgot so new line
new line and new line
much better another thing that we can do
with format specifiers is that we can
set a minimum field width so just add a
number after the percent sign let's say
that i would like to allocate eight
spaces worth of room to display my
number
so after the percent sign but before the
decimal add how many spaces you would
like to set for the minimum field width
let's say eight
and let's see the new output okay there
we go however it's all right aligned if
you would like this left aligned you
would use a negative sign after the
percent to left align all this this
would be
negative whatever number you would like
to allocate so the number is left
justified but we still have all of this
room after so that's what a format
specifier is it defines and formats a
type of data to be displayed so place a
format specifier within a string use a
certain character for the type of dad
you would like to display you can set
decimal precision for floats and doubles
you can set a minimum field width to
display your output if you would like to
line things up like you can see here and
you can left or right align your output
so yeah those are format specifiers if
you found this video helpful please be
sure to smash that like button leave a
random comment down below and subscribe
if you'd like to become a fellow bro
hey everyone so i'm going to attempt to
explain constants in about a minute a
constant is a fixed value that cannot be
altered by the program during its
execution i have a variable pi pi equals
3.1415
but what if we accidentally or somebody
else changes the value of pi it's an
important number pi now equals 420 69.
since this value was changed this will
alter the result of our program to
prevent a variable or value from being
changed we can turn that variable into a
constant by preceding the data type with
this keyword const and a common naming
convention with constants is that you
make all the letters uppercase although
it's not necessary but it's considered
good practice so if i attempt to take
our constant and assign this a different
value we'll run into an error error
assignment of read-only variable pi that
is what a constant is it's a fixed value
that cannot be altered by the program
during its execution and it provides a
little bit of security so if you found
this video helpful please be sure to
smash that like button leave a random
comment down below and subscribe if
you'd like to become a fellow bro
well well well welcome back so we need
to talk about arithmetic operators
because well this wouldn't be a full
course without them so as you probably
know arithmetic operators are well
addition subtraction multiplication
division and there's a few others too
unique with programming such as modulus
increment and decrement so let's go over
a few let's say that we have int z and
if we need to add two numbers we could
say x plus y
equals z and then display the sum which
of course is seven so subtraction is
well minus five minus two is three
multiplication is an asterisk five times
two
equals 10. okay now pay attention to
this with division so 5 divided by 2
equals 2.5 right well that's where
you're wrong it's 2 because we're
storing the result within an integer and
with integers we can only store whole
numbers so we will lose that decimal
portion it will be truncated there's a
few things we'll need to change first
we'll need to store the result within a
float or a double and then let's display
this percent f for a float okay another
thing that we need to change too and
that involves integer division if we're
dividing by an integer we'll truncate
that decimal portion there's one of two
things we can do we can either change
our divisor to a float
or a double and that will solve that
problem 2.5 or if we would like to keep
this as an integer we can convert this
integer to a float or double by
preceding the divisor with
float
or double either one
so if i would like to keep y as an
integer and we divide x by y we will
convert 2 into a float so 2.0 and store
the result within float z and the result
is 2.5 so if you're performing division
with any integers you need to pay
attention to integer division and you
may need to cast your divisor as a float
or as a double now we have modulus
modulus gives you the remainder of any
division 5 does not divide by 2 evenly
int z equals x
modulus y
and if we display z
so make sure to change your format
specifier if you didn't the remainder of
five divided by two is one
if this was four four divides by two
evenly and the result is going to be
zero modulus gives you the remainder of
any division it's actually pretty
helpful to find if a number is even odd
all you do is say modulus 2 or some
variable containing the value of 2
either way and then we can increment or
decrement a number by 1. if i need to
increment x for some reason you'll see
this when we get to the video on loops i
could say x
plus plus
and then let's display x
x incremented by one
would be six
and then let's decrement y y minus minus
and y decremented by one equals one so
yeah everybody those are a few
arithmetic operators a lot of these are
fairly simple you know addition
subtraction multiplication and division
do pay attention to integer division
because that can throw off your program
then there's also modulus increment and
decrement if you found this video
helpful please remember to smash that
like button leave a random comment down
below and subscribe if you'd like to
become a fellow bro
hey welcome back everybody here's a
super quick video on augmented
assignment operators they're used to
replace a statement where an operator
takes a variable as one of its arguments
and then assigns the result back to the
same variable now what the heck does
that mean okay so let's say that we need
to increment the value of x by one
without using an increment operator we
could say x equals x plus one so writing
this out can be somewhat redundant there
is a shortcut by using an augmented
assignment operator whatever variable
you would like to perform an operation
on you will list that variable use an
arithmetic operator equals and then some
value so writing this would increment x
by one so let's go over a few examples
we have into x equals ten so i could
write x equals x plus two to increment x
by two right or i could say as a
shortcut x plus equals two and that will
do the same thing and that's twelve now
let's try minus
x equals x minus three using the
augmented assignment operator that would
be x minus equals three which is seven
what about x equals x times four well
that would be x times equals four x
times four
is forty and division
x equals x divided by five
the augmented assignment operator of
this equation is x divided by equals
five
which is two and lastly modulus so what
about x equals x modulus two
that would be x modulus equals two
x modulus two equals zero well yeah
everybody those are augmented assignment
operators they're basically a shortcut
they're used to replace a statement
where an operator takes a variable as
one of its arguments and then assigns
the result back to the same variable
it's a shortcut if this video helped you
out you can help me out by smashing that
like button leave a random comment down
below and subscribe if you'd like to
become a fellow bro
hey uh welcome back in this video i'm
going to show you all how we can accept
user input in c now if you're using vs
code we need to switch from using our
output tab to terminal and one way in
which we can make that change is by
going to file preferences settings
search for code runner
and then check this run in terminal so
then when we run our code it will now
display in terminal which accepts user
input output doesn't because well it's
only for output and you can ignore this
this is a powershell command that will
compile and run your c program but if
you prefer instead of powershell you can
use command prompt but you would need to
manually compile and run your code since
i'm using windows that would be a gcc
the name of your c program hello world
dot c that will compile your program
into an executable named a dot exe
then just type that to run it but i'll
stick with using powershell just to kind
of simplify things okay now how can we
accept user input let's declare a
variable age but not yet assign it next
we're going to create a prompt to ask
the user for their age and we'll ask how
old are you
to accept user input we can use the scan
f function it's kind of the inverse of
printf printf is used to display
something as output scanf is used to
read input what we're going to place
within our scanf function is the format
specifier of the variable we will insert
a value into if we need to accept a
number an integer as input the
corresponding format specifier is
percent d
then add a comma the name of the
variable but precede the variable name
with an ampersand that is the address of
operator let's print a message that
contains the value stored within our
variable edge u
are
percent d
years old so this is our format
specifier it functions as a placeholder
and i would like to display the value
contained within my edge variable so
things are getting a little bit
difficult to read i'm just going to
precede this with a new line
okay let's try that again how old are
you let's say that i'm 21 not anymore
but let's pretend that i still am
you are 21 years old that's basically
how to accept user input you use the
scanf function use the format specifier
of the variable list the variable
appreciated with the address of operator
let's try this again but instead accept
a string from a user like a name we need
to declare an array of characters and
set asides so let's create a character
array named name
now with character arrays we can't
change the size of the array after the
program is already running let's set a
max size of maybe 25 bytes for this
array if we go over this limit this will
cause a buffer overflow and let's ask a
user for their name so we'll create a
prompt
printf
what's your
name and i again will use scanf
list the appropriate format specifier
for character arrays which is percent s
then our variable name and use the
address of operator then at the end
we'll display our name
printf
hello
percent s
how are you
then comma name and before we run this
i'm just going to add some new line
characters just to make everything
easier to read
okay let's try it
what's your name i'll type in just my
first name not including any white
spaces
how old are you 21
hello bro how are you you are 21 years
old so now this time let's type in a
first and last name because this is
going to act a little bit bizarre what's
your name bro
code and this is separated with the
white space hit enter
hello bro it did not include my last
name how are you you are zero years old
so using the scan f function we will
read up to any white spaces so if your
user input is going to include a white
space we need to use a different
function and that is the f gets function
f gets
parentheses
and there are three things we will list
within the fgets function
the name of the variable and we do not
need the address of operator that
ampersand for this
then we need to set an input size i will
set this to 25 to match the size of our
array
and then std in which means standard
input so using this function we can read
any white spaces
what's your name i'll type in a first
name and a last name
how old are you 21
hello bro code and notice that our
output is actually being displayed on
the next line that's because when you
use the f gets function it will include
the new line character when you hit
enter if you need to get rid of that new
line character at the end so that it's
not included with your input here's what
we can do it's a little advanced but
we'll cover this in future videos we'll
include this import
include
string dot h
so using this import we can work with
strings all we're going to do is edit
our string and get rid of that newline
character at the end what i'm about to
show you will look a little bit advanced
but it's going to make more sense when
we get to the video on string functions
type the name of the variable followed
by a set of straight brackets
type str len this gets the length
subtract one and we will set the sequel
to backslash zero that will get rid of
the new line character so again this is
a little bit advanced for us but it'll
make more sense in future videos when we
get to the video on string functions and
let's try this one last time
what's your name
type in a first name and a last name hit
enter how old are you 21.
hello bro code how are you you are 21
years old if you need to accept a string
from a user that includes white spaces
like a first name and a last name you'll
want to use fgets in place of scanf
because scanf can't read those white
spaces it stops right there but it will
include that new line character when you
hit enter
so you can do some string formatting
just to get rid of that new line
character and like i said this statement
here will make more sense when we reach
the video on string functions but yeah
basically that's how you can accept user
input you can use the scanf function if
you need to accept a string of
characters that includes white spaces
you'll want to use fgets instead so yeah
that's how to accept user input and see
if you found this video helpful please
be sure to smash that like button leave
a random comment down below and
subscribe if you'd like to become a
fellow bro
hey what's going on everybody so in this
video i'm gonna show you some useful
math functions in c now if we include
this math header file this contains a
lot of the useful functions i'm about to
show you one useful function is the
square root function let's say that we
have a bunch of variables we declared
them but we have not yet assigned them i
will assign a the square root of nine so
after including this math header file i
have access to a square root function
so type sqrt then add a set of
parentheses and within the parentheses
we can find the square root of a number
let's find what the square root of nine
is and then display it with a printf
statement
so the square root of nine is three so
let's move on we can raise a base to a
given power by using the pow function
the first number is the base let's raise
two to the power of four and then
display it
two to the power of four is 16. we can
round a number and i will store this
within an integer
let's round
3.14
oh and then make sure you use the
appropriate format specifier for ins
3.14 rounded is 3.
now by using the seal short for ceiling
function we can always round a number up
3.14 rounded up is 4.
likewise there's a floor function where
we will always round down
3.99 rounded down
is
3. we can find the absolute value of a
number that's how far a number is away
from zero
so it will take any negative numbers and
make them positive the absolute value of
negative 100
and that would be positive 100 if you're
familiar with logarithms we can find the
logarithm of a number
log 3
is
1.098612
and if you know some trigonometry
there's various functions for sine
cosine
and tangent
so what's the tangent of 45
that is supposedly this number
1.619775 so yeah everybody those are a
few math functions that you might be
interested in to use these just include
this header file at the top math.h if
you found this video helpful please be
sure to smash that like button leave a
random comment down below and subscribe
if you'd like to become a fellow bro
hey everyone here's a quick program that
we can make to calculate the
circumference of a circle i thought this
would be good practice for us now that
we know how user input works let's
declare all of the variables that we'll
need i'm going to create a constant
variable named pi and it's going to be
of the double data type pi equals
3.14159
the reason that i'm making this a
constant is that i don't want anybody
else to be able to change the value of
pi and let's declare but not assign a
radius quite yet we'll have the user
type that in
and double circumference
this will be calculated and displayed so
we will need to prompt the user to enter
in a radius i'll proceed this with a new
line
enter
radius
of a circle and then i will use scanf to
accept some user input we need to list
the format specifier of doubles which is
lf comma address of operator
radius
then the formula for radius is 2 times
pi times radius and then we will display
our circumference using printf
circumference
then we need a format specifier we're
displaying a double so the format
specifier is lf
comma circumference
and let's run it
enter well the radius of a circle
uh let's say that our radius is 10 maybe
this is 10 i don't know meters
all right our circumference is
62.83 meters now why not take this a
step further let's also calculate the
area of the circle i wasn't planning on
taking it this far but hey let's
calculate that as well for practice so
let's declare a double variable named
area
and we will calculate what area is the
formula for the area of the circle is
pi times radius squared
pi times radius times radius
then let's display the area
so area
we're using the double format specifier
and area then let's add some new line
characters to separate everything
enter the radius of a circle let's say
10 meters
the circumference is
62.83 meters and the area is 314
meters all right everybody that is a
small program to calculate the
circumference of a circle and i guess
the area as well just because well why
not so yeah if you found this video
helpful please be sure to smash that
like button leave a random comment down
below and subscribe if you'd like to
become a fellow bro
alright welcome back everybody in this
video we're going to write a small
practice program to find the hypotenuse
of a right triangle we'll need the help
of our math.h header file because we'll
need access to some useful math
functions more specifically the square
root function let's declare all of the
variables that we'll need we'll need
sides a b and c and these will be of the
double data type
we'll ask the user to enter in sides a
and b
print f
enter
side
a and then we will use scanf
so the format specifier for a double
is l f then i would like to insert a
value within a so i need to use the
address of operator then our variable a
okay let's do the same thing for side b
enter side b and store the user input
within variable b the formula to find
the hypotenuse of a right triangle is
the square root of a squared plus b
squared
so we will set c
equal to the square root function
and within the parentheses we will say a
times a
plus b times b
and then we will display c
side
and the format specifier for a double is
l f and we are displaying c and well
let's try it
so side a let's say is three side b is
four
that means side c is five so yeah i
thought that would be a good practice
program for us to get used to accepting
user input if this video helped you out
help me out by smashing that like button
leave a random comment down below and
subscribe if you'd like to become a
fellow bro
hey let's talk about if statements if
statements are used to add some choices
to a program let's take the small
program for example we have a variable
edge and we'll ask a user to enter in
their edge what if i would like to check
their edge maybe they're signing up for
a credit card or something so to check
some value we can write an if statement
if parentheses then a set of curly
braces if some condition that we specify
is true we will execute some block of
code some subsection of code what sort
of condition should we write let's check
to see if age is greater than or equal
to 18. so there's different comparison
operators there's greater than or equal
to
greater than less than less than or
equal to
or you could check to see if two values
are equal by using double equal signs
this is the comparison operator if you
use just one this is the assignment
operator and this would be the same as
assigning age equal to 18 so if you need
to compare if two values are equal use
the comparison operator which is double
equal signs but what i would like to do
is check to see if age is greater than
or equal to 18. if this condition
evaluates to be true we will have our
program do something
so let's print a message
since we're signing up for a credit card
let's say you are now signed up
and let's run it
end to your age let's say that i'm 21 i
hit enter boom you are now signed up but
what if this condition is false let's
say that i'm 12 years old and i'm
attempting to sign up for a credit card
well we skip this if statement if this
condition evaluates to be false we will
skip this block of code and continue on
with the rest of the program ignoring it
or we could do something else by using
an else statement if this condition is
false we will skip this subset of code
and instead perform this let's print a
different message instead
you are too young to sign up
and let's try that again
and to your edge i am 12.
you are too young to sign up you can
check more than one condition before
reaching your else statement by using
else if blocks and that is by using else
if statements we can check another
statement before reaching our else
statement
so let's check to see if age is less
than zero so obviously somebody's
messing with this program then because
you can't be under zero years old right
you haven't been
born yet
so after running this program if i say
that i'm negative
six
you haven't been born yet so we will
check our if statement first if this
condition is false we will move down to
the next block and then check this else
if condition if all above statements
evaluate to be false we will execute
this else block as a last resort so to
say and with these else if blocks you
can add more than one let's check
something else
just to demonstrate
else if
what about age is equal to zero
and we will print
you can't sign up
you were just born
and to your age i am zero years old
you can't sign up you were just born if
one of these conditions evaluates to be
true we will skip all of these
statements that come after then with our
else block if all above statements
evaluate to be false we definitely
execute whatever's within here
so yeah those are if statements they add
some choice to a program you can check
to see if some condition is true if not
you can check something else using else
if statements you can perform whatever
is within an else block and that's
optional so yeah those are if statements
and see if you found this video helpful
please be sure to help me out by
smashing that like button leave a random
comment down below and subscribe if
you'd like to become a fellow bro
all right welcome back people switches a
switch is a more efficient alternative
to using many else if statements it
allows a value to be tested for equality
against many cases here's an example of
where a switch would be useful i have a
small program we will tell a user to
enter in a letter grade and depending on
their grade we will print a custom
message
if grade equals a will print perfect
else if grade equals b will print a
different message so on and so forth so
it's considered bad practice to use a
lot of else if statements a better
alternative is to use a switch here's
how we can create one type switch
parentheses
curly braces whatever value you would
like to examine for equality placed
within the parentheses i would like to
examine my grade and now we need to
write some cases
case
and then some value you would like to
test for equality
so i am comparing characters i will
write the character a
colon
then if these values match we will
execute some subset of code kind of like
an if statement
let's print
perfect
and then add a break afterwards
then you can add another case
so case b
you did good
casey
you did
okay
case d
at least it's not an f
case f
you failed
now you can add a default case this
functions like an else statement if no
other cases match we will execute
whatever's within our default case
so that means there are no matching
letter grades
so let's print
please enter only valid grades
and let's test it
enter a letter grade a
this will print perfect whatever's
within our matching case
let's try it again
b you did good
see you did okay
d at least it's not enough
f you failed
and if there are no matching cases we
will execute our default case uh how
about w for win
please enter only valid grades the
reason that we add breaks after each
case is so we can break out of our
switch and exit let me show you what
this looks like if we do not have any
breaks
now let's say that we have a c letter
grade
you did okay at least it's not enough
you failed please enter only valid
grades
so the reason that we have breaks is to
exit out of our switch if we have a
matching case and there are no breaks we
will continue executing each case that
comes after so it is important to have
those breaks if you want to exit out of
your switch well yeah that's a switch
everybody it's a more efficient
alternative to using many else if
statements using a few elsif statements
is okay but it's considered poor
practice to use a lot of them so yeah
those are switches if this video helped
you out you can help me out by smashing
that like button leave a random comment
down below and subscribe if you'd like
to become a fellow bro
hey uh everybody it's bro hope you're
doing well and in this video we're going
to create a small program where the user
will type in a temperature and we can
convert that temperature from fahrenheit
to celsius or celsius to fahrenheit so
sit back relax and enjoy the show
now before we begin this video make sure
that you include these two imports at
the top we'll be working with string
functions and many of them can be found
within this import see type dot h so
let's declare the variables that we'll
need
char unit unit will be either c for
celsius or f for fahrenheit and float
temp short for temperature
let's prompt the user to enter in some
user input
printf is the
temperature
in
or
and then we will accept some user input
so we will be accepting a character so
use the appropriate format specifier for
characters
and we will use the address of operator
which is an ampersand
unit
and then let's use an if statement to
check to see
if unit
is equal to the character c
else if
unit is equal to f
we will use the formula to convert
fahrenheit to celsius if it's c celsius
to fahrenheit and we should probably add
an else statement as well
okay let's actually test these right
now okay this will only be temporary i'm
going to print a message
the temp is currently
in celsius
and with fahrenheit the temperature is
currently in fahrenheit
so if the user did not type in c or f
well then what the heck did they type in
so within our else statement let's yell
at the user let's say that whatever they
entered in is not valid input
so format specifier c
is not a valid unit of measurement
and then we will display whatever the
user typed into our unit variable
so let's test this is the temperature in
f or c
so f
the temp is currently in f
let's try it again
is the temperature in f or c see
the temp is currently in c
okay this time we will not type in f4c
how about the word pizza this only
accepts the first character
p is not a valid unit of measurement
here's one situation that we may run
into c programs are case sensitive if i
type in lowercase f or lowercase c well
technically neither of these conditions
would be true for example if i type
lowercase t
c is not a valid unit of measurement to
avoid that problem i can take my user
input and use the two upper function to
make it uppercase or you could set these
conditions to check for lowercase
characters instead and use the two lower
function
so let's take our unit variable and i'm
going to reassign it after using the to
upper function and then pass in our unit
to make it uppercase and now if i type
in lowercase c or lowercase f
this user input will be made uppercase
the temp is currently in c
so this is optional but i thought it'd
be a good thing to add to this program
now what we'll work on next depending on
the unit there's going to be a different
formula a different calculation
now we will need the user to enter in
the current temperature so let's begin
with our if statement if unit is equal
to c celsius
enter the temp
in celsius
this time we are accepting a floating
point number
we will use scanf the format specifier
for floating point
numbers address of operator
temp
and then we need to calculate the new
temperature after it's converted from
celsius to fahrenheit and we will
reassign it into the same variable temp
temp equals and here's the formula
temp
times
9 divided by 5
plus 32
and then let's print the temperature
printf
the
temp
in
fahrenheit
is
and i'm going to use a format specifier
percent f but i would only like to
display one digit after the decimal so i
will add dot one
and then we will insert our temperature
temp okay let's try this enter the
temperature in f or c currently we only
have the celsius portion set up
so see
enter the temp in celsius
how about zero degrees celsius
the temp in fahrenheit is 32.0 okay so
we know that it's working
let's fill out our else if statement
else if unit is equal to f
and let's copy some of this
enter the temp in
fahrenheit
we will reassign our temperature
variable
temp equals
and here's the formula
temp minus 32
times 5
and we will divide all of this by 9.
[Music]
then let's display the temperature in
celsius
the temp
in celsius is
our format specifier then the temp
variable is the temperature in f or c
this time it is in fahrenheit
enter the temp in fahrenheit so 32
degrees in fahrenheit should translate
to zero degrees celsius
which it is
so yeah everybody i thought that would
be a useful practice program for us to
get used to accepting user input
i'll post all of this code from this
program in the comments section down
below if you would like a copy
so if you found this video helpful you
can help me out by smashing that like
button leave random comments down below
and subscribe if you'd like to become a
fellow bro
hey yeah what's going on everybody i
thought in this video we could create a
simple calculator program in c for
practice let's begin by declaring all of
the different variables that we'll need
we'll need a character to store an
operator
so are we going to add subtract multiply
or divide
we'll need double num1
double num2
and double result
let's ask the user what type of
operation they would like to use
enter an operator
so we can use addition subtraction
multiplication or division
and we will use scanf to accept some
user input if we're accepting a
character the format specifier is c
and we will use the address of operator
the name of our variable we would like
to store some user input into
then let's accept num1
enter
number one
then scanf
the format specifier for a double
is lf
num1
okay do the same thing with number
two replace one with two
then to examine our operator let's use a
switch
switch
and we will examine our operator for any
matching cases let's add a default case
because i might forget to add this later
so if a user does not enter in anything
that has a matching case one of these
four symbols
let's print a message
let's say that our operator is not valid
our first case will be edition so case
addition
result
equals num1 plus num2 and let's display
our result
result
and the format specifier for a double is
lf
and then at the end of your case you
should break to break out of the switch
then we can copy this
paste it
and then change any plus to minus
then do the same thing with
multiplication
and lastly division
and that is it so let's try this
enter an operator i would like to add
enter number one 4.20 plus
3.14
that is
7.34 and you can limit the amount of
digits after the decimal that is
displayed if you would like to adjust
that with the format specifier with
result type dot than the amount of
digits you would like to display so i'm
just going to go ahead and change that
real quick
okay so by adding 0.2 to our format
specifier this will only display it two
digits after the decimal but you can
keep it the original way if you'd like
okay let's subtract so minus
4.20 minus 3.14
is
1.06 okay multiplication
3.14 times 4.20
is 13.19
and lastly division
3.14
divided by 4.20
is
0.75
and we do have a default case if there
are no matching cases
let's type in a character besides one of
these four symbols how about
i don't know a dollar sign
unfortunately we still need to enter
into numbers and then this states our
operator is not valid
so yeah everybody that is a very simple
calculator program in c
if you would like a copy of all this
code i'll post a copy in the comment
section down below so this calculator
can add subtract multiply and divide
there are four cases but you can expand
upon this if you'd like so yeah
everybody that was a very simple
calculator program in c
hey yeah what's going on people logical
operators there are three logical
operators we will discuss in the series
and or
and not but in this video we're going to
focus on and first the and logical
operator which is represented by two
ampersands checks to see if two or more
conditions are true here's an example
we're going to create a program that
will check to see if a given temperature
falls within a range so let's say we
have a floating point number named temp
temp short for temperature and this will
equal some number in celsius let's say
25 to begin with so using an if
statement let's check to see if temp
is greater than or equal to zero
if that is true then we will print
something
the weather is good
else
the weather is
bad okay so temp is 25 therefore the
weather is good
okay what if our temperature is
something extreme like 1000 degrees
celsius so technically this condition
would still be true the weather is
actually not good it's fairly
catastrophic so let's check to see if
another condition is also true by using
the and logical operator we're checking
to see if temp is greater than or equal
to 0 and some other condition such as
temp
is less than or equal to 30.
so if temp is at 1000
then the weather is bad this condition
is true but this one is false using the
and logical operator both conditions
must be true in order to execute this
statement now if our temperature was 25
degrees well then both conditions are
true and we will execute this statement
the weather is good
now you can add more than one condition
let's throw in another variable let's
say that we have a boolean variable
named sunny let's say that it's cloudy
outside now if we're working with
booleans include this header file at the
top stdbool.h
then let's add another condition
and let's check to see if sunny
is equal to true if you're checking the
value of a boolean variable you don't
necessarily have to type out equals true
you can say
sunny is equal to one or you can just
say sunny because this would contain
true or false so this time we are
checking to see if temp is greater than
or equal to zero
and temp is less than or equal to 30 and
sunny is true the temp is 25 but sunny
equals false therefore we do not execute
this statement
these first two conditions are true but
this one is false and using the and
logical operator all conditions must be
true
now if i set this to be true
well then all three of these conditions
are true and we will execute this
statement the weather is good so yeah
that is the and logical operator it is
represented by two ampersands it checks
to see if two or more conditions are
true and one example we used is to check
to see if our temperature falls within a
certain range so yeah that is the and
logical operator in the next video we
will discuss the or logical operator so
if this video helped you out you can
help me out by smashing that like button
leave a random comment down below and
subscribe if you'd like to become a
fellow bro
hey again it's me so we're gonna talk
about the or logical operator the or
logical operator which is represented by
two vertical bars checks if at least one
condition is true let's take the small
program for example it's kind of similar
to the last video so we have a variable
named temperature for temperature we
will first check if temp is less than or
equal to zero if that's true we will
print the weather is bad
else if temp is greater than or equal to
30 the weather is bad else the weather
is good so you know this program does
work the weather is good but another way
of writing this is that we can use the
or logical operator and we can check to
see if at least one of two or more
conditions is true so let's take this
condition
get rid of this else if statement
so we will check to see if temp is less
than or equal to zero
or temp is greater than or equal to 30.
so if our temperature is negative 1000
degrees celsius then the weather is bad
this is true but this is false and using
the or logical
only one of these conditions needs to be
true if both are true that's fine as
well or our temperature could be
positive 1000 degrees celsius the
weather is also bad this is false and
this is true and only one of these
conditions needs to be true but if our
temperature is 25 well neither of these
conditions are true at least one
condition needs to be true in order to
execute the statement so yeah that is
the or logical operator it checks to see
if at least one condition is true and
you can check more than one condition by
adding another set of vertical bars for
the ore operator so if you found this
video helpful please be sure to help me
out by smashing that like button leave
her in a comment down below and
subscribe if you'd like to become a
fellow bro
hey yeah let's discuss the notch logical
operator which is represented by an
exclamation point its purpose is to
reverse the state of a condition let's
write a small program let's say that we
have a boolean variable named sunny and
this will be either true or false let's
say it's true to begin with so to work
with boolean variables include this
header file at the top and we will write
an if-else statement to check to see if
it's sunny outside and print a custom
message
so if sunny
is equal to true
then we will print
it's sunny outside else it must be
cloudy outside
so this does work it's sunny outside
another way of writing this is that we
could say sunny is equal to one because
true represents one false represents
zero this would also work or you could
just say sunny this would work as well
so by using the not logical operator
this will reverse the state of condition
by using the not logical operator we're
checking to see if something is not true
so if i try this again
this program states it's cloudy outside
so i think it would be better if we were
to switch these print statements around
now what we're checking is if it's not
sunny if it's not sunny then we will
print it's cloudy outside
else it's sunny outside
it is sunny outside and if i change this
to be false
well then
it's cloudy outside so yeah that's the
not logical operator you can just
precede a condition or a boolean
variable with the not logical operator
and that gives you a few more options in
the way in which you can write a program
so yeah that is the not logical operator
if you found this video helpful you can
help me out by smashing that like button
leave random comments down below and
subscribe if you'd like to become a
fellow bro
hey yeah what's going on let's talk
about functions a function is a small
section of code that is executed
whenever we call it also known as
invoking a function when we compile and
run a c program we begin with invoking
the main function so here's our task we
need to sing three verses of happy
birthday for some reason if we are only
using the main function we could write
it like this
this will be the first verse of happy
birthday and if i need to sing three
verses i could just copy and paste this
one section
and then paste it two additional times
then i'm just going to add a new line
character at the end
technically this would work but it's
considered poor practice to repeat code
more than once if you don't have to
wouldn't it be better if we write this
code once and then simply reuse it well
we can by using a function so let's
delete two of these verses
and we will create a new function so
outside of the main function let's
declare a new function so for now we're
going to type void and then a unique
name for this function let's say that
it's the birthday function followed by a
set of parentheses and then a set of
curly braces so i'm going to take any
code i would like to repeat and place it
within this new birthday function and if
i need to invoke this function all i
have to do is type the name of the
function followed by a set of
parentheses i like to think of the
parentheses as a pair of telephones
talking to each other that's one trick i
used to remember that's how to call a
function so follow the function name
with the set of parentheses and when i
invoke this function once we will
execute any code within this function
once if i need to repeat this code three
times i will just have to call this
function three times
we are calling our birthday function
three times
and there we go we have invoked this
birthday function three times and we
have accomplished our goal of singing
three verses of happy birthday so
basically that's all what a function is
it's some subsection of code that is
executed whenever you invoke it also
known as calling a function a benefit to
using functions is that if you think
you're going to use some code more than
once you can stick it within a function
and then to repeat that code you just
call the function as many times as you
need so yeah those are functions if you
would like a copy of this code i will
post this to the comments section down
below and in the next video we will
discuss arguments and parameters so yeah
that's the basics of functions in c
hey yeah what's going on people so let's
talk about arguments and parameters i
have a function named birthday which we
discussed in the previous video this
will print two lines of text happy
birthday dear x you are y years old what
i would like to do is replace x with a
user's name and y with a user's age so
here's how we can write a program like
that so let's begin by within the main
function declaring two variables a
character array named name
and assign this your first name and an
age and this will be of the int data
type and let's say that this will be age
and make up some age i like to think
that i'm still 21 years old okay so if i
try and display a name and age you think
this would work right so i'm going to
use a format specifier then s to display
a string and then i will display our
name variable and with y let's display
our age so let's use d for our format
specifier to display an integer and we
will display age now here's the problem
you can see that we have some red
underlines name is undeclared as well as
age here's the deal functions can't see
inside of other functions our birthday
function is unaware of our name and age
variables one way in which we can make
our birthday function aware of these is
to pass them as arguments when we invoke
the birthday function so based on the
last topic on functions i mentioned that
when we call a function we type the
function's name followed by a set of
parentheses i like to imagine the set of
parentheses as a pair of telephones and
these two functions are talking to each
other our main function needs to make
our birthday function aware of our name
and age variables so what we can do is
pass these variables as arguments so
between the parentheses we can add our
variables separated with a comma so
let's pass name and age so anything that
you're passing to a function are known
as arguments but we need a matching set
of parameters within the function
declaration so between this set of
parentheses we will list our name and
age variables but precede each with the
data type that we're working with so we
have name and age so age
is an integer so precede the variable
name with int and name is a character
array so we're going to precede name
with char
and then add a set of straight brackets
after so these are parameters parameters
are what this function needs in order to
be executed so this does work happy
birthday dear bro you are 21 years old
so with parameter setup you can only
call this function if you pass a
character array as well as an integer if
i were to remove these arguments we can
no longer call this birthday function
error too few arguments to function
birthday so when you call a function you
can pass some arguments but you need a
matching set of parameters and the names
of these parameters don't necessarily
have to be the same what's important is
the order of the arguments and the data
type so let's say name is x and age is y
so let's replace that here as well
and that would work too so yeah those
are arguments and parameters arguments
are what you're sending a function
parameters are what a function expects
when it's invoked and the benefits of
arguments and parameters is that these
functions can talk to each other because
functions can't see inside of one
another so if you have some variables
within a function you can pass them to
another function as arguments so yeah
those are arguments and parameters if
you would like a copy of this code i
will post this in the comments section
down below and well yeah those are
arguments and parameters in c
hey what's going on people so the return
statement the return statement returns a
value back to a calling function here's
an example i have a function named
square square is going to accept one
argument a double it's going to square
that double and return the result back
to the calling function so here's an
example let's say we have double x and
i'm going to call the square function
and then pass in some value
let's say 3.14
so when we call a function we can also
return a value back to the spot in which
we call a function so within our square
function let's set double result equal
to x times x effectively squaring it so
to return a value back to the calling
function we will use this return keyword
followed by some value or variable i
would like to return result however we
need to list the data type of what we're
returning within the function
declaration right now it's void so if
we're returning a double we will list
double here if this was an integer we
would return int
if it was a character we would return
char you kind of get the idea so result
is a double so we need to change this
from void to double and we will return
this result back to the calling function
so we're effectively stating that double
x equals 3.14 squared and then let's
print the result
so printf
the format specifier for a double is lf
and we will print x
and 3.14 squared is 9.859
now you could shorten this too we could
just say return x times x
instead of declaring a local variable
return x times x
and that would work the same so yeah
that's basically the return statement
you can place it within a function and
return a value or variable back to the
calling function
and the spot in which you invoked that
function but if you're going to return a
value or variable within the function
declaration you need to change void to
the data type of what you're returning
so yeah that is the return statement and
you may have noticed within our main
function we're returning zero zero is
the exit status if this program runs
successfully so instead of void with our
main function declaration we have int
because zero is technically an integer
so yeah that's the return statement if
you would like a copy of this code i
will post this to the comments section
down below well yeah that's the return
statement in c
hey sup people the trinary operator also
known as the conditional operator it's a
shortcut to using an if-else statement
when assigning or returning a value
here's the formula we write a condition
followed by a question mark if this
condition is true we return some value
if true or if that condition is false we
return some other value here's an
example first we'll use an if-else
statement and then later we'll switch to
the ternary operator so let's create a
function that will find the maximum of
two integers and i'm going to assign
that to int max
and we will invoke a function find max
but we'll still need to declare it so
let's pass in two integers maybe three
and four
and then i'm going to display whatever
max is
okay so let's declare this function so
we're returning an integer
the name is find max and let's set up
some parameters into x and int y so if
we're using an if else statement if we
need to return x if it's larger we can
check to see if
x is larger than y
if so then return x
else
return
y so this does work
so the max between three and four
is four
so if i switch three to five
well then the max is five so a shortcut
to writing an if else statement like
this if we're returning or assigning a
value is that we could instead use the
tenary operator so let's return and then
we have a condition
so this is our condition
is x greater than y then we add a
question mark
then the value we're returning if true
so if x is greater than y let's return x
colon then our value if this condition
is false and here within our else
statement we're returning y
and we no longer need this if else
statement and that's all there is to it
so we cut down on all that code and now
just have one line of code so it's kind
of like a shortcut and this works much
the same so the maximum between five and
four is five and if i change five back
to three well then the max is for so
yeah that's the ternary operator it's a
shortcut to using an if else statement
when assigning or returning a value you
write some condition add a question mark
like you're asking a question then list
some value to return if this condition
is true and then some other value if
this condition is false so you just
follow this formula so yeah that's the
trenary operator if you would like a
copy of this code i'll post this to the
comments section down below and well
yeah that's the canary operator nc
hey everybody so let's discuss function
prototypes a function prototype is a
functional declaration without a body
before we declare the main function it
ensures that calls to a function are
made with the correct number and type of
arguments it has some benefits which
we'll discuss later basically this is
another way in which we can declare and
define functions in the last few topics
when we were declaring functions we were
doing so before the main function so
let's say void and we have a function
named hello and there will be two
arguments and ray of characters named
name and int age and what i would like
this function to do is print a message
using our name and age
so hello name
you are age years old so what we're
going to do is now move this function
from before the main function to after
the main function and let's declare some
name and age variables so char name
use your first name and int age make up
some age now i'm going to invoke my
hello function
but pass in an incorrect number of
arguments now here's one of the benefits
of a function of prototype it's going to
ensure that we have the correct number
of arguments when we invoke a function
so the correct arguments for our hello
function are an array of characters and
an integer what if i'm missing one of
these arguments let's say we only pass
in a name
and then invoke this function
so this is going to result in unexpected
behavior
and we do have a warning here
conflicting types for hello but this
program will still compile and execute
so here's the result hello bro you are
million five hundred twelve thousand
three hundred and fifty two years old
and if i run this again this will
probably be a different number so this
will result in unexpected behavior we're
not ensuring that calls to a function
are made with the correct arguments one
way in which we can do that is to add a
function prototype before the main
function and to add a function prototype
to a given function we will declare that
function but not give it a body before
the main function and then we will later
add a body and define what this function
is going to do so before the main
function we will type the return type of
this function
void
the name of the function
hello and then add the data type and the
order of arguments so we have a
character array
and an integer then end it with a
semicolon so this is a function
prototype
it ensures that calls to a function are
made with the correct arguments so now
if i attempt to call the hello function
with only one argument when two are
required instead of a warning we'll
receive an error and it states that
there are too few arguments to function
hello so this program will not compile
and run successfully which is what we
want because we made a mistake and if i
were to add the correct arguments now
well then this program is going to
compile and run fine
so here's some important notes regarding
function prototypes many c compilers do
not check for parameter matching that's
why this program was still able to
compile and run without a function
prototype even though we were missing
arguments and that can result in
unexpected and unwanted behavior such as
saying that i was over a million years
old so a function of prototype causes
the compiler to flag an error if
arguments are missing
you can write the functions before the
main function that's okay too but a few
advantages of using a function prototype
is that it's easier to navigate a
program when the main function is at the
top of your file it also helps with
debugging and it's commonly used in
header files which is something we need
to discuss in a future topic so yeah
that's basically a function prototype
we're going to define any functions
after the main function now and before
the main function we will declare a
function prototype one function
prototype for each function we have
besides the main function and this
ensures that we have the correct number
and type of arguments which will prevent
any unexpected behavior it's basically
just another way to declare functions
that you may run into in the future so
yeah those are function prototypes if
you would like a copy of this code i
will post this to the comment section
down below and well yeah those are
function of prototypes in c
hey everybody so now that we know how
functions work i thought this would be a
good opportunity for us to learn about
some useful string functions so there's
a lot of string functions that are
already written for us just include this
header file at the top include string
dot h so create two strings one named
string one and the other named string
two string one will be your first name
string two will be your last name and
then at the end of this program i am
just printing string one using a printf
statement so let's begin the first
useful string function is string lower
so whatever string you pass in as an
argument this function will convert a
string to lowercase so the first letter
in my name is uppercase it's capitalized
so after passing in string1 into this
function
my name is all now lowercase
otherwise there's string upper that will
convert a string to uppercase
and my name is uppercase
stringcat will concatenate as in append
string2 to the end of string1 so we will
append the second argument to the first
argument so if i pass in string one then
string two this will append my last name
to my first name and these strings are
now combined or i could append a given
amount of characters from string two to
string one so the third argument is a
number if i append one character from
string two to string one then this will
take the c from my last name and append
it to the end of my first name so that
is the string and cat function
there's also string copy and this one is
actually fairly common
so this will copy string two to string
one if i print string one well it now
displays code instead of bro this will
remove the contents from string one and
replace them with string two or you
could copy a given amount of characters
from string two to string one uh let's
say that i'm going to copy the first
character over so i'm copying the first
character from my last name to my first
name
and my first name is now crow or i could
set this to two
and this will copy the first two letters
over
coo all right here's a few more so
string set will set all characters of a
string to a given character i'm going to
set all of the characters from string 1
to a question mark all of the characters
within my name are all question marks
and string and set will set the first
and characters of a string to a given
character so i'm going to set the first
character of my first name to an x
so my name is now x bro and string
reverse will reverse a string so if i
reverse string one
my first name is now orb so this next
set of functions will return an integer
so i'm going to declare a variable int
result and this function is really
common string length this returns the
string length as an integer
if i pass in string one this string has
a length of three characters and then
i'm going to print my result and this is
an integer
so the length of my first name
is three characters this is a fairly
common function
the string compare function will compare
all of the characters within two strings
if they're the same they will return
zero if they're different they will
return a number beside zero so here's an
if statement
if result is equal to zero we will print
these strings are the same else these
strings are not the same
so my first name is not equal to my last
name these characters are different so
this code will print
these strings are not the same and let
me get rid of that printf statement
okay now if i make the strings the same
then result is going to be zero
these strings are the same and you can
compare a given amount of characters too
so currently i have these strings set to
be the same characters so this will
compare only the first character
these strings are the same even if i
change the other characters the first
characters will still be the same
so this function will return zero there
are two additional versions of string
compare and string and compare they are
string compare i and string n i compare
so these will do the exact same things
except they ignore case sensitivity so
yeah everybody those are just a few
useful string functions there's still a
lot more located within this header file
but we would need to understand how
things like pointers work which we have
not discussed yet but i thought i would
at least cover some of the basics so
yeah those are a few useful string
functions in c if you would like a copy
of all these notes i'll post them to the
comment section down below and well yeah
those are a few useful string functions
in c
hey yeah welcome back so we have to talk
about for loops a for loop repeats a
section of code a limited amount of
times here's an example let's say that
we would like to count the numbers 1
through 10. so we can actually write a
for loop to do that for us and here's
how to create one type four
a set of parentheses then a set of curly
braces anything within this set of curly
braces we can repeat a limited amount of
times but before we do so there's a few
statements we have to add to our for
loop there are three the first is that
we need some sort of counter or index
and we can actually declare that within
the for loop so we will declare an index
int
index and set the sql to some number
let's say one so we will start at one
and count to ten and then finish the
statement with a semicolon now a common
convention is that a lot of people will
shorten index to i because it's easier
to work with so this is the first
statement there's two more and the
second statement is a condition how long
should we continue repeating this code
so let's continue this for loop as long
as i our index is less than or equal to
10 and then add a semicolon at the end
so that is the second statement and the
third statement is that we can increment
or decrement our counter
so let's take i and increment it by one
after each iteration by using i plus
plus so let's just test this so printf
i'll just print the word test
so this should print the word test ten
times
uh then we should add a new line
character at the end
that's much better okay now let's
replace test with a format specifier
we're displaying an integer
and let's display i our index and this
should count from one to ten
yep just like that one through ten so
with this third statement we can
increment or decrement by one or a
greater number so this time let's count
by two so we can set this to i plus
equals two and we will now count up by
two starting from one one three five
seven nine
or how about three
one four seven ten you can also
decrement this time let's count from ten
to one so let's set i to equal 10
and we will continue this as long as i
is greater than or equal to 1
and we will decrement i minus minus
so this will count from 10 to 1 and then
stop or we could count down by two
i minus equals two
then we have ten eight six four two
or even three or a greater number
so yeah that's a for loop it repeats a
section of code a limited amount of
times there's up to three statements
that we can add we can declare an index
a counter so to say some condition that
we check after each iteration and then
some way to increment or decrement our
index and then place any code you would
like to repeat within a set of curly
braces so yeah that's a for loop if you
would like a copy of this code i will
post this to the comment section down
below and well yeah those are for loops
in c
all right we're back at it again so
let's talk about while loops a while
loop will repeat a section of code
possibly unlimited times we will
continue some section of code while some
condition remains true and it's possible
that a while loop might not execute at
all depending on what our condition is
so here's an example let's create a
program that will ask a user for their
name if they attempt to skip that prompt
then we will keep on asking them for
their name indefinitely so here's how we
can write a program like that using a
while loop we'll need to begin with a
character array let's say name and this
will be 25 bytes and we will create a
prompt using printf
what's your name we can use scanf for
user input but with names that may
contain spaces i'm going to use fgets
instead
refer to the video on user input to
learn more about fgets so i would like
to assign my variable name
set the size of the user input 25 to
match what we have
then type stdn for standard input then
we just need to get rid of the new line
character at the end of our user input
so we can write something like this
set our character array of name and
within the straight brackets we will use
the string length function
pass in name
-1
and we will set this equal to a null
character and then at the end we will
display the user's name printf
let's say hello and then use a format
specifier for strings which is s and we
will display a user's name
okay this is what this looks like
currently
what's your name i'll type my name hit
enter
and it says hello bro now what if i
don't type in anything like i just hit
enter
what's your name i'm going to hit enter
hello and then there is no name here how
can i force a user to type in something
well i could use a while loop and that
will prompt a user to enter their name
indefinitely so here's how to create a
while loop type while parentheses
curly braces and we need a condition
what are we going to check we will
continue this while loop while some
condition remains true
our condition to check to see if we have
an empty string
we could use the string length function
pass in name and check to see if this is
equal to zero
if it is zero that means that somebody
just hit enter without typing in
anything so let's print a message to
yell at them
you
did not enter your name
and then let's copy this section of code
and paste it to reprompt the user to
type in their name
and that's all there is to it so while
this condition remains true we will
execute this code forever so let's try
it again
okay what's your name i'm going to hit
enter you did not enter your name what's
your name no no no no
okay i give up
hello whatever your name is so yeah
that's basically a while loop it repeats
a section of code possibly unlimited
times there's a lot of overlap where you
could use either a for loop or a while
loop and we execute some body of code
while some condition remains true
however a while loop might not execute
at all if this condition is false to
begin with so if the user actually does
type in something well this condition is
false and we do not execute this body of
code so yeah that's a while loop it
repeats a section of code possibly
unlimited times if you would like a copy
of this code i will post this to the
comment section down below and well yeah
those are while loops in c
hey everybody so let's talk about do
while loops a do while loop is a
variation of a while loop so a while
loop first checks a condition
then it executes a block of code if that
condition is true so we may not even
execute that block of code at all if
that condition is false from the get go
a do while loop always executes a block
of code once and then we checking
condition at the end if that condition
is true we will continue another loop so
here's what i'm thinking for a
demonstration we'll create a small
program where we will have a user type
in as many numbers as they want as long
as it's above zero and then we will find
a sum so if we're writing a program like
that we can first declare two variables
int number i'll go ahead and assign
these some values right away so we'll
set number to zero and int sum equal to
zero as well to keep track of the sum
we'll first begin by creating a while
loop
so we will use a while loop
and our condition is if number
is greater than zero
then we will continue to ask the user to
type in some numbers
if that number is zero or less then we
stop so let's ask a user for a number
enter a number
above zero and then using scanf we will
accept some user input
and store this within number and let's
check to see if
number
is greater than zero
if it is we will take sum set this equal
to sum
plus number but you can just shorten the
statement to plus equals number that's
fine too and then at the end we will
print whatever the sum is
sum
we're displaying an integer
and we are displaying some so with our
number i set this to zero and since our
while loop is checking the condition
first we're not actually going to
execute this body of code
so our program skipped this while loop
and went straight to the printf
statement so a while loop checks a
condition first a do while loop will
check a condition last so to change this
to a do while loop we will take our
condition
and move it to the end
just after the last curly brace and add
a semicolon and then before the first
curly brace we will add the word do so
we will do this once and then check the
condition to see if we would like to
continue so now if i run this
we get that prompt enter a number above
zero and i can type in as many numbers
as i want so one two three four five so
we check the condition at the end
so our condition is that if our number
is greater than zero we will continue
this loop so if i type in negative one
we will exit
and our sum is 15. so that's the major
difference between a while loop and a do
while loop a while loop checks a
condition first then executes a block of
code if that condition is true a do
while loop always executes a block of
code once
then checks a condition if that
condition is true then we continue again
so yeah that's a do while loop it's a
variation of a while loop and if you
would like a copy of this code i'll post
this to the comments section down below
and well that's the do while loop in c
hey welcome back so nested loops a
nested loop is a loop inside of another
loop when you'll encounter them it's
really situational so i don't really
have one good example but what i'm
thinking we'll do is use a nested loop
for an exercise what i'm thinking is
that we'll let a user type in a number
of rows and columns and a symbol and
print a rectangle of that given symbol
but the user is going to specify a
number of rows and columns so let's
begin by declaring all of the different
variables that we'll need intros and
columns and char
symbol we'll let the user type in a
number of rows and columns
enter number of rows
then use scanf to accept some user input
we are accepting an integer so use d for
the format specifier address of operator
rows then do the same thing with columns
enter number of columns
let's create our nested loops you can
use either for loops or while loops it's
just the concept of one loop inside of
another so let's use for loops for our
outer loop and inner loop
the outer loop is in charge of keeping
track of the rows the inner loop will be
in charge of keeping track of the
columns so i need this outer for loop to
iterate once for every row that we have
so we could write something like this
int i set this equal to one i need to
continue this for loop as long as i is
less than or equal to rows
and then increment i by one after each
iteration so now let's create a nested
for loop we will declare a loop inside
of another loop
and this inner for loop is in charge of
the columns we should probably not reuse
our index of i so let's create a new
index and a common naming convention for
an inner for loop is to use j because j
comes after i in the alphabet
so i will set int j equal to one we will
continue this as long as j is less than
or equal to columns
then increment j by one for the time
being until we let a user type in a
symbol let's just print our index so
let's use printf
we're displaying an integer
and let's display j
and let's take a look at this
okay enter number of rows how about 3
rows and five columns
so here's our output we have the numbers
one through five three times
so to make this more of a rectangle a
grid i'm going to add a new line
character whenever we finish a row
so printf
newline character let's try that again
enter number of rows three number of
columns five
so we have three rows and five columns
basically speaking to complete one
iteration of our outer loop we have to
escape our inner loop first
once this condition is no longer true
then we will escape the inner loop and
complete one iteration of the outer for
loop but then once we begin in the next
iteration of our for loop we're stuck
back within our inner for loop again so
that's kind of the concept now this time
let's let a user type in a symbol and we
will create a sort of rectangle
enter a symbol to use then scanf we are
accepting a character so use the c
format specifier address of operator
our symbol variable
now we're going to replace j with our
symbol
and the format specifier for a character
is c
then let's try this again
so how about three rows and six columns
okay here's the issue so we have all of
this empty space
now when we entered our number of
columns after hitting enter we have the
new line character within our input
buffer so our next scana function
actually picked that up so what we need
to do is clear our buffer and one simple
way of doing that there's a couple
different ways is that we can just use
scanf again
and we will read a character and that's
one way to do it basically with this
line we're just getting rid of the new
line character after the last time we
use scanf because that's still within
our buffer okay let's try this one last
time what about four rows
and five columns enter a symbol to use
uh how about the dollar sign
there we go here's our rectangle it has
five columns and four rows so yeah
that's basically a nested loop it's a
loop inside of another loop and when
you'll encounter them it's really
situational i thought this would be good
practice to understand how they work to
complete one iteration of the outer loop
you have to first escape the inner loop
and that may involve completing all
iterations of the inner loop so yeah
those are nested loops if you would like
a copy of this code i will post this to
the comment section down below and well
yeah those are nested loops in c
hey people i have a super quick video
for you today on the differences between
the continue and break statements so
when using either statements within the
context of a loop a continue statement
will skip the rest of a section of code
and force the next iteration of a loop a
break statement will exit out of a loop
entirely another place where you see
break statements is when used within a
switch after each case so here's an
example let's say that we would like to
count the numbers 1 through 20 but i
would like to skip the number 13 because
13 is considered an unlucky number so if
i were to write a program like that that
would look something like this
so let's use a for loop and i will set
an index of i equal to one continue this
as long as i is less than or equal to 20
and then increment i by one then let's
print our index so printf we're
displaying an integer
and let's display i i'm just going to
add a new line character after each
iteration when we use a printf statement
okay so this is what this looks like we
have the numbers 1 through 20. so if i
would like to skip the number 13 i can
use a continue statement but we need to
check to see if i is equal to 13 we can
use an if statement
so
if i is equal to 13
then we will continue
and let's take a look so we have the
numbers 1 through 20 but we are missing
13 so a continue statement will skip the
rest of a section of code and force the
next iteration of a loop now if this was
a break statement this will break out of
our loop entirely so once we reach 13
then we will exit out of this loop
entirely so here we only have the
numbers 1 through 12 and then we break
we exit out of the loop so that's a
quick demonstration of the differences
between continue and break the continue
statement will skip the rest of a
section of code and force the next
iteration of a loop a break statement
exits out of a loop entirely so yeah
that's a super quick video on the
differences between the continue and
break statements if you would like a
copy of this code i'll post this to the
comments section down below and well
yeah those are the major differences
between the continue and break
statements in c
hey everybody let's talk about arrays an
array is a data structure that can store
many values of the same data type here's
an example let's say i have a variable
named price and i have the price of
maybe one item in a fictional store of
ours so by using an array we can
actually store more than one value but
it has to be of the same data type so i
can turn this variable price into an
array and i can do that by following the
name of the variable and add a set of
straight brackets and then any values i
would like to add to this array i will
surround with a set of curly braces and
there we go we have turned our variable
price into an array but i'm going to
change the name to prices because i
think it would be more descriptive
because we can store more than one value
now so we can add multiple values each
separated with a comma so let's say we
have another price that is 10
15
25 and maybe 20. now you may have
noticed some parallels when we create a
string it's really an array of
characters so if i need a name we would
say the data type is char
and we will create a name array followed
by a set of square brackets and i will
set this equal to some amount of
characters a string is really just an
array of individual characters and with
my name here i have three individual
elements three individual values now if
i need to access one of these values i
need to use an index number so let's
print one of these numbers
so printf
i'm going to use the format specifier
for a double and i'm going to list my
array name
prices then follow this with a set of
straight brackets then i need an index
number so each spot within an array is
known as an element so we have five
elements within our array and to access
one of these elements i need to list an
index number the first element has an
index number of zero because computers
always start with zero so if i display
prices at index zero
this contains the number five i'm
actually going to format this let's
display it two digits after the decimal
and i'll precede this number with a
dollar sign
much better all right so then if i
display prices at index one that is
technically our second number of ten
dollars
so prices at index two
is fifteen three
is twenty five
and four which is our last element
is twenty so arrays they have a fixed
size we can't change the size after we
compile and run our program another
thing that you can do too if you do not
know what values you would like to
initialize your array with you can
always just set a size let's say i would
like a size of five elements but then
i'll assign some values later
so later on in our program we can say
prices
at whatever index let's say index zero
i'm going to assign with five and i'll
do the same thing for the other elements
so prices at index one is maybe ten
prices at index two is fifteen
three will be twenty five
and 4 will be 20.
that's another way in which you can
initialize an array you can always set a
size and then add elements later another
option is that you could combine the two
we could set a size right away so maybe
prices will have a size of 10 and we can
right off the bat assign some values
right away so we have five elements that
are currently filled but then the other
five are empty so there's a few
different ways in which you can
initialize an array so yeah that's
basically an array it's a data structure
that can store many values of the same
data type initializing an array is much
like creating a variable except you will
add a set of straight brackets after and
then you can either add some values
right away or later on in your program
but you need to list an index number of
where you're placing a value within the
array and then to access a value within
your array you type the array name
followed by an index number kind of like
a parking spot number so yeah those are
arrays in the next video i'm going to
show you how we can iterate over the
elements in an array using a for loop if
you would like a copy of this code i
will post this to the comments section
down below and well yeah that's an
introduction to arrays in c
hey welcome back everybody in this video
i'm going to show you how we can loop
through and print the elements of an
array so i have an array of doubles
named prices and i just made up some
fictional prices to display one of these
elements i can use a printf statement i
will use the appropriate format
specifier for the elements displayed
within this array since this array
contains doubles i will use the format
specifier for a double then to access
one of these elements i will type the
name of my array followed by a set of
straight brackets then an index number
so the first element in an array is zero
because computers always start with zero
then if i need to display the other
elements well i would have to manually
type prices at index zero then one two
three four so on and so forth so this
does work if you have a couple elements
but what if you have hundreds this
method is not going to be practical a
better solution is that we could make a
for loop and this for loop will iterate
once and display each element of this
array so let's create a for loop for
parentheses curly braces and we'll need
an index int i i'll set this equal to
zero
then we'll need a condition for the time
being let's set i less than five but
later on we're going to replace five
with something else and i'll explain
that later and then we will increment i
by one so then during each iteration
let's use this print statement again
and make one change instead of setting
an index number let's use our index
instead then i'm just going to add a new
line character after each printf
statement
so here we go this for loop should
iterate five times
and it will display the elements within
our array
so we have 5 10 15 25 20. maybe i'll add
a couple extra things to this format
specifier let's display two digits and a
dollar sign
that's much better so this kind of
resembles maybe a receipt of some sort
like somebody just bought a bunch of
items okay now here's one situation what
if we add or remove elements from this
array let's say that a user purchases
one more item for thirty dollars now the
way that this for loop is written it's
not going to display this last element
because we set this for loop to iterate
as long as i is less than or equal to
five it's not going to display this last
element so we would need some way to
update this condition
a better solution instead of using a
number here is that we could calculate
the amount of elements within our array
and loop that many times and one way in
which we could do that is to use the
size of operator so let me demonstrate
the size of operator real quick it will
return the size of an operand in bytes
so let's print this
so this will be an integer
and we will use the size of operator and
pass in our array of prices so this size
is going to be in bytes
so the size of our ray in bytes is 48
bytes we have six elements made up of
doubles each double uses up eight bytes
so six times eight is 48 so now let's
use the size of operator instead size of
prices
but we are going to divide the size of
our array by the size of one of these
elements they're all going to be
consistent because they all have the
same data type so we will take size of
prices divided by
the size of one of these elements let's
say prices at index zero
so 48 divided by
eight equals six we will iterate through
this for loop six times and here's our
array we have 5 10 15 25 20 30 and we
can add or remove elements freely and
there's no need to update our code
because we may not remember to do that
later on
so yeah that's one way to loop through
and print the elements of an array you
can use a for loop then use a printf
statement and for the index of your
array you can use the index of your for
loop then if you would like your for
loop to calculate how many times it's
going to iterate through this array you
can use the size of operator pass in
prices divided by the size of one of the
elements and that will calculate how
many elements are within your array
so yeah that's one way to loop through
the elements of an array if you would
like a copy of this code i'll post this
to the comment section down below and
well yeah that's how to loop through and
print the elements of an array in c
hey everyone two dimensional arrays it's
an array where each element is an entire
array it's useful if you need a matrix
grid or table of data let's begin by
creating a simple one-dimensional array
of maybe some numbers so the data type
is int
the array name will be numbers and let's
initialize this array with a few numbers
1 two and three something simple so if i
would like to store a grid or matrix of
data these elements will be the first
row and i can add a second row
so separate each row with a comma then
another set of curly braces and then you
can add more values so let's say four
five and six and we'll stop here with
these separate arrays we will surround
with a set of curly braces
and preceding the first set of straight
brackets we will add a second set of
straight brackets so this is now a two
dimensional array however with a two
dimensional array we have to specify a
maximum size of elements within each of
these arrays let's say that each of
these arrays will have a maximum size of
three elements a piece so within the
second set of straight brackets i will
list three and you can although it's not
necessary set a maximum amount of arrays
within your two-dimensional array
so let's say two because we have two
separate arrays within our
two-dimensional array now to better
visualize how this is more or less a
table of data i'm going to rearrange
these
so this may be a better visualization
this first set of straight brackets is
for the number of rows and the second
set of straight brackets is for the
number of columns so we have two rows
and three columns within our
two-dimensional array now you can
declare a two-dimensional array but not
assigned values quite yet but you'll
need to set a maximum size so right now
i'm just going to turn this into one
giant comment
and let's declare a two-dimensional
array with two rows and three columns
and here's how to assign some values we
will type the name of the array followed
by two sets of straight brackets we need
a row number and a column number so the
first column within the first row is
going to be zero zero because computers
always start with zero
and let's assign this a value of one the
second column within the first row
would be
zero one and let's assign two there
then zero two and that will be number
three so the first column within the
second row would be numbers one zero and
this will be four then we will follow
the same pattern so where five was that
would be one one
and six is one two
so this is another way to initialize an
array you can set a maximum size and
then assign some values later or you
could assign all of the values right
from the beginning if you know what they
are okay now how can we display the
elements of a two-dimensional array
we'll have to use nested loops
so let's create a for loop and i will
declare an index of i
set this equal to zero and for the time
being i'm going to say i
is less than the number of rows that we
have so right now we have two rows but
we're going to change this value later
to something that's more flexible that
will calculate the amount of rows that
we have and then i will increment i by
one now let's create a nested loop
that's in charge of keeping track of the
columns
and let's use an index of j because we
do not want to reuse i
so set j equal to zero we will continue
this as long as j
is less than however many columns we
have three a maximum of three and then
increment j by one so during each
iteration of the inner for loop let's
display one of these elements so we will
use the format specifier for an integer
d is fine
followed by our array numbers and then
we have two indices so the row is going
to be i
and this will begin at zero
and the columns is j this will also
begin at zero so after each iteration of
the inner for loop we will increase j
when we finish the inner for loop we
will increment i by one so by using
nested for loops we can iterate over all
of the elements of this array so i'm
just going to add a space after our
number and we should probably add a new
line after each row so i'll add a new
line let's test this
here we go we have our table of two rows
and three columns now there's one
situation that we may run into what if
we change the amount of rows and columns
that we have so let's say that we add
one more row our 2d array of numbers
will have three rows and three columns
row two column zero equals seven
row two column one will equal eight and
row two column two will equal nine so if
i were to run this again well this last
row is not going to be displayed so it
would be better if we can calculate how
many rows and columns are within our
two-dimensional array and here's one way
to do so i'm going to declare two new
variables int rows
and into columns and i will set the
condition of the outer for loop to be as
long as i is less than rows and the
inner for loop will be j is less than
columns
now we just need to calculate what these
numbers are going to be to calculate
rows we can use the size of operator and
then pass in the entire size of our
two-dimensional rib and we're going to
divide this by the size of one of our
rows they're all going to have the same
size so we can pass in our rain numbers
and then specify one of the rows let's
say the first row they're all going to
be the same okay so that's how we can
calculate the number of rows that we
have now to find the number of columns
we can copy what we have here and then
just make a few changes
so we will say
the size of the first row row 0
divided by the size of one of the
elements found within the first row
so we can say zero zero and let's print
the amount of rows and columns that we
have just to test it
so we have rows
and columns
i'm just going to add a new line
character real quick
okay so we have three rows three columns
and here's our table three rows with
three columns a piece so yeah that's
basically a two-dimensional array it's
an array of arrays where each element is
an entire array it's useful if you need
a matrix grid or table of data and in
this example we made a table of integers
just the numbers one through nine so
there's a couple different ways in which
you can initialize a two-dimensional
array but you'll need two sets of
straight brackets it's optional to set a
maximum number of rows but it is
necessary to set a maximum number of
elements within each row and then to
access one of the elements you use two
indices one for the row one for the
column so yeah those are two dimensional
arrays if you would like a copy of this
code i'll post this to the comment
section down below and well yeah those
are two dimensional arrays in c
hey everyone in this video i'm going to
show you how we can create an array of
strings let's say we will have an array
named cars
so we will need a two-dimensional array
so we need two sets of straight brackets
and within the second set of straight
brackets we will specify a maximum size
for each of these elements let's say
maybe 10 characters so a string is
already an array of characters let's add
our first string maybe we have a mustang
so to add a second element we would
separate the next one with a comma then
we can add another string
let's say we have a corvette and then
one more how about a maybe camaro okay
so with all of these different strings
i'm going to surround with a set of
curly braces and here we go we have an
array of strings it's basically a 2d
array of individual characters except
each element is a string now one
important difference with an array of
strings is that we can't directly change
one of the values
let's say car's at index zero equals a
tesla
and then i'm going to try and run this
so we can't directly assign a new value
one way in which we can do so is to use
the string copy function so if you're
going to use the string copy function
include this import
string dot h okay so to update one of
the values i will use string
copy
pass in my array
and an index number
followed by a string so let's say a
tesla and this would work now to display
an array of strings we can use a for
loop
and there's no need for a nested loop so
we will create an index i set this equal
to zero i would like to continue this as
long as i is less than and we will
calculate how many elements are within
our array so we will use the size of
operator pass in our array divided by
one of the elements
size of
cars and maybe the first element of zero
and then increment i by one during each
iteration so then during each iteration
let's display one of these elements
using a printf statement
let's display a string
i'll add a new line after each printf
statement
and let's display our array cards at
index of i
so this should display tesla corvette
and camaro in that order
tesla corvette and a camaro so yeah
that's an array of strings it's really a
two-dimensional array of characters but
it involves less steps because each of
these strings is already an array and if
you need to update or edit one of the
values you can use the string copy
function so yeah that's how to work with
an array of strings if you would like a
copy of this code i'll post this to the
comments section down below and well
yeah that's how to work with an array of
strings in c
all right what's going on people so in
this video i'm going to show you how we
can swap the values of two variables now
you may be wondering why the heck do we
need to know this so swapping variables
is actually very common within sorting
algorithms and when we reach the next
topic on sorting arrays we'll need to
learn how to do this so let's begin i
have two variables x and y x contains
the letter x y contains the letter y and
let's print these values i'll use a
printf statement let's display x
and y
x equals x y equals y so how can we swap
these let's try x equals y and see what
happens within both x and y the value is
y what about y equals x
well then both variables contain the
character x so what can we do it seems
like we're stuck what we could do is
that we could introduce a third variable
let's say char and let's name this temp
because it's a temporary variable so we
have a third variable to work with as
temporary storage for some value so
let's assign
temp is equal to x
and then we will assign
x equals y
and then lastly y equals temp
and this should work let's try it
yep x equals y and y equals x
now this is a little bit different if
you're working with strings so let's say
these are character arrays
and we'll pretend that these are maybe
glasses holding some fluid x contains
water
and y contains maybe lemonade
and let's make temp a character array as
well but we need to declare a size let's
say 15. okay so this isn't gonna work
we're already receiving problems
expression must be a modifiable l value
so when working with arrays it's not
enough to simply assign values
we could use the string copy function so
let's get rid of these and we will use
string copy oh also make sure that you
include this header file okay so we will
copy the contents
of x
over to temp
and it's the same procedure as before
string
copy y
over to x
and string
copy
temp over to y
and then make sure you change these
format specifiers to strings
x did contain water now it contains
lemonade y did contain lemonade and now
it contains water
when swapping variables i like to
imagine my variables as glasses and they
contain some fluid if we pour the
contents of one glass into the other
well then the contents will be pushed
out and overflow so it would be wise of
us to introduce a third glass that's
empty to hold one of these fluids so
then we can pour the contents of one
variable into the other now here's one
issue that you may run into when using
the string copy function if the length
of the second argument is less than the
first argument this can lead to
unexpected behavior i'm going to replace
lemonade with soda and let's see what
happens
so x doesn't contain anything but y
contains water one solution is that we
can make these character arrays the same
size
let's say that they're both 15
and that should solve that issue so
that's something you may need to take
into consideration when using the string
copy function if you're going to swap
strings so yeah everybody that's how to
swap the values of two variables if you
would like a copy of this code i'll post
this to the comment section down below
and in the next video i'm gonna show you
how we can sort the elements within an
array and well yeah that's how to swap
the values of two variables in c
hey uh what's going on people so in this
video we're going to write a small
program to sort the elements of an array
let's begin with an array of integers
and then later we'll create an array of
characters the data type will be int and
let's name this array
and assign some values make sure that
they're not in order just make up some
numbers that's fine
looks good to me now let's calculate the
size of our array because we'll need to
know how many times we're going to
iterate through our array so int size i
will set this equal to the size of
operator pass in our array this will
calculate the size of our array in bytes
and to find the number of elements we
can divide this by the size of just one
element so size of array divided by the
size of array at index of zero
size will equal the amount of elements
within our array and just to keep this
code more organized let's declare a
function to actually sort all of this
for us so we don't have to do that
within the main function
so let's declare a sort function the
return type is void we're not returning
anything and let's name this sort
and there will be two parameters
an array of integers
and integer size
and let's invoke this function we're
invoking sort and then we need to pass
in two arguments
our array
and a size
within the sort function we'll need
nested loops we can use four loops
so the outer for loop will be int i set
this equal to zero and we will continue
this for loop as long as i is less than
the size of our array minus one and then
increment i by one and then we need an
inner for loop so let's copy our outer
for loop paste it and make a few changes
so the index for the inner loop will be
and we'll continue this as long as j is
less than the size of our array minus
one then j plus plus
here's what we're doing within our array
so we will begin at our first index
we're checking to see if the element on
the left is greater than the element on
the right if so we're going to swap
these two values and we'll need the help
of a temporary variable much like what
we learned in the last topic so let's
check to see if the element on the left
is greater than the element on the right
if it isn't we do nothing
so we need an if statement
if array
at index of j
is greater than array at index of j plus
one
we're adding plus one because we're
checking the element directly next to
the one that we're currently examining
so if the number on the left is greater
than the number on the right we will
perform a basic variable swap
so let's declare a variable in temp to
temporarily store some value and i will
set the sequel to array at index of j
now i need to move the element on the
right over to the element on the left
array
at index of j
equals array at index of j
plus one and then lastly whatever's
within temp i'm moving that to the
element on the right so array at index
of j plus one
equals temp and that's it so if you
would like to optimize this you can set
size
minus i
minus one basically this is a bubble
sort so depending on the size of this
number it's going to find a final
resting place since 9 is going to be the
largest it's going to be pushed all the
way to the right because we will examine
9 against each of these numbers so once
9 is pushed all the way to the right all
these other numbers that are less than 9
will be on the left so it's already
partially organized and now we just need
some way to display the elements of our
array so let's declare a print function
void and let's name this print array
and these will have the same parameters
an array of integers and into size
and this is a basic for loop
so for
and i set this equal to zero
we will continue this loop as long as i
is less than the size of our array and
increment i by one
and i would like to display each integer
and maybe i'll separate these with the
space and we are displaying our array at
index of i and all we have to do is
invoke the print array function
and then pass in our array and our size
and let's take a look fingers are
crossed
oh yeah there we go our array is now
sorted now if you would like this in
descending order all we have to do is
switch this if statement around from
greater than to less than
and our array is sorted in reverse order
and we could sort an array of other data
types too this time let's sort an array
of characters so let's declare an array
of characters this time
and make up some characters
so then to sort an array of characters
let's change the data type of our array
to characters
and then when we display each character
make sure that we're using the c format
specifier because we were using d before
and this should now be sorted
yep so that's currently in reverse order
so then to switch that around just
change the sign
all right there you go so yeah everybody
that is a simple program to sort the
elements of an array this is a basic
bubble sort and if you're interested in
learning more about sorting algorithms i
do have a playlist on data structures
and algorithms if you would like a copy
of this code i'll post this in the
comments section down below and well
yeah that's how to sort a simple array
in c
okay everybody so let's talk about
structs a struct is short for structure
think of it as a collection of related
members kind of like variables they can
be of different data types unlike with
arrays structs are listed under one name
in a block of memory in order to refer
to that struct we can refer to a
variable name and then we have access to
that block of memory that contains
related members and lastly structs are
very similar to classes in other
languages if you're familiar with more
than just c you'll probably know what a
class is but there are no methods within
a struct it's only members so we can
actually use structs to mimic real world
objects let's say that maybe we're
playing a game and we need two players
each player will have a name and a score
these will be the members so to create a
struct outside of our main function we
will type the keyword struct followed by
a tag name let's say we are working with
players then we need a set of curly
braces then end it with a semicolon so
any members think of these like
variables so let's say we have a
character array named name and i'll give
this a size of maybe 12.
so we will declare these but not assign
them we'll do that later and we have an
int named score so each player is going
to have a name and a score kind of like
we're playing an arcade game now to
assign some of these values we're going
to create a type of variable and a
player is going to be kind of the data
type so we will type struct
then the tag name
which was player
and then a variable name let's say we
have player 1 and player 2. so with
these structs you can reuse them so we
have struct player player 1 and struct
player player 2. so we can assign values
to these members however if we have an
array of characters we're going to use
the string copy function
so let's use the string copy function
then to access one of the members you
will type the name of that struct so
let's say player one and then follow
this with a dot the dot is a member axis
operator so after typing the dot we have
access to a name and score member so
let's set the player's name equal to
whatever your first name is now if
you're not working with an array of
characters such as an integer you can
just access these directly so let's set
player one's score two equal maybe four
points and we also have player two but
we have not assigned values to its
members
so this time let's assign player two's
name and score
so we can just copy what we have but
change player 1 to player 2. player 2
let's say is bra and player 2's score is
5. now if i would like to display these
members i can do so with a print
statement so printf let's display our
name first so i will use the s format
specifier
player one dot name and then i'll add a
new line then to access player one's
score well that's an integer so i will
use the d format specifier player one
dot score and then let's do the same
thing with player two
so player two dot name and player two
dot score so we have our player one
strucks name member as bro and score
member set to four and then our player
two struct has a name member of bra
and a score member of five so yeah
that's basically a struct it's a
collection of related members think of
these kind of like variables they can be
of different data types unlike arrays
and they are listed under one name in a
block of memory so in this example we
have player 1 and player 2. player 1 and
player 2 refer to different blocks of
memory which contain their own unique
members if you're familiar with other
programming languages they're very
similar to classes but they cannot
contain any methods so yeah those are
structs if you would like a copy of this
code i'll post this to the comment
section down below and well yeah those
are structs in c
all right typedef typedef is a reserved
keyword that gives an existing data type
a nickname here's an example let's
create a character array of 25 bytes and
we'll say that this is user one so
character
user one and the size is 25 bytes
and then make up some username
okay so writing some of the syntax can
be somewhat tedious what a lot of c
programmers will do is that they will
use this type def keyword to give some
data type a nickname let's use this type
def keyword to give a character array of
25 bytes some nickname so i'll do this
outside of the main function we will
type type def
then our data type
so this is a character array of 25 bytes
and we need some sort of nickname so
let's say that a character array of 25
bytes will be known as a user
now i don't need all of the syntax now i
can type my data type
user and then some variable name let's
say user one from this point forward if
i need a character array of 25 bytes i
can call that a user that's my nickname
now one place where you see this used a
lot is with structs this time let's
create a struct at first we won't use
the typedef keyword and then i'll show
you the benefits later so let's say this
is a struct
and the tag name is user
users will have let's say three members
a character array named name of 25 bytes
a password of 12 bytes
and int id like an id number
so to create a struct we would have to
type struct
then the tag name
user
and a variable name
and let's assign some of these values
i'll assign a name password and id
looks good to me okay then if i need to
create user two
i would type again struct user some
unique variable name and make up some
values
okay so with a strut if i would like to
use the typedef keyword i will precede
the struct keyword with typedef
and i don't necessarily need this tag
name and after the last curly brace here
i will add my nickname i'll call this a
user if we need to create a user struct
we no longer need to use the struct
keyword we can remove this
and this should work so let's print some
of these members
and here are the two users that we
created yeah so in conclusion typedef is
a reserved keyword that gives an
existing data type a nickname and it's
mostly used for convenience if we use
the typed up keyword when declaring a
struct we no longer need to use that
struct keyword to create a struct we can
just use this nickname as the data type
and then come up with some unique
variable name so yeah that is the
typedef keyword if you found this video
helpful please be sure to give this
video a thumbs up leave a random comment
down below and subscribe if you'd like
to become a fellow bro
hey everybody so in this video i'm going
to show you how we can create an array
of structs let's say we're working with
students and we need to print each
student's name and gpa so let's create a
struct outside of our main function type
struct and then a tag name for the
struct let's say student so each student
will have a name and a gpa
so let's create a character array named
name i'll set a maximum size of maybe 12
characters
and a gpa that could be a float
so float gpa now let's initialize some
structs we type struct followed by the
tag name and then some variable name to
identify each struct so let's say we
will have four students overall and i'll
go ahead and assign some values right
away when we initialize the struct so we
need a name and a gpa so the first
student let's say is spongebob
and spongebob has a gpa of 3.0
so we can copy this and create a few
more students so student one student two
student three and student four
next we have patrick
patrick has a 2.5
then sandy sandy is smart so she has a
4.0 and squidward
squidward has a 2.0 so we have four
students now we will create an array so
the data type of our array what it's
containing will be struxx it will be
struct student it's kind of like the
data type so with an array you have to
declare what you're going to be putting
within the array struct students and
then we need an array name so this will
be students and then specify a maximum
size if you need one but i'm just going
to initialize this array with some
students so let's add student 1
student 2
student 3
and student 4 and there we go we have an
array of structs
now if i would like to display each
student's name i can use a for loop to
loop through our array
so for
curly braces we will create an index
into i set this equal to zero
we will loop through this as long as i
is less than and then we need to
calculate how many elements are within
our array so we have four elements but
we can do that by using the size of
operator passing our array and then
divide this by the size of one of these
elements
size of students and then pick maybe the
first element of zero after each
iteration we will increment i by one so
then within our for loop let's print
each student's name
so let's use the s format specifier to
display a string and we will display our
array at index of i whatever our counter
is
and we will use the member axis operator
of dot so follow students at index of i
with a dot then we have access to a name
and a gpa so let's display each
student's name and then i'll add a new
line after each printf statement
so there we go we have spongebob patrick
sandy and squidward now let's display
each student's gpa so let's copy this
line
we are displaying a float so the format
specifier for a float is f
students at index of i
dot
gpa then i'll get rid of that new line
character and let's take a look to see
what we have
okay we can see each student's name and
gpa but we may want to format this
so after each student's name i'll add a
tab and i'll allocate maybe 12
characters to display each student's
name and then left justify it and then
with our gpa let's display two digits
after the decimal so i will add
dot 2
so this should look better
yeah that's much more organized so we
have spongebob with the gpa of 3.0
patrick with 2.5 sandy with 4.0 and
squidward with a 2.0 so yeah that's how
to create an array of structs if you
would like a copy of this code i'll post
this to the comment section down below
and well yeah that's how to create an
array of structs in c
well well well welcome back so enums
short for enumerations they are a
user-defined type of named integer
identifiers a benefit is that they help
make a program more readable either for
us or for somebody else that's looking
over our code so here's how to create
some enums you can either declare these
within the main function or outside of
the main function let's do so outside of
the main function so to create some
enums type the keyword enum followed by
a unique identifier let's say we're
working with days of the week so let's
say day
curly braces and then end this with a
semicolon so enums are constants and
let's declare some constant names let's
say the seven days of the week so
separate each constant with a comma and
we will just go through the days of the
week
here are the enumerations that we
declared the days sunday through
saturday the days of the week now each
of these constants has an associated
integer so beginning with your first
constant this will have a value of zero
then the next will have one
then two then three then you continue on
in that pattern but you can give these a
unique value let's change it sunday to
one because it's the first day of the
week then monday will be two and then we
will just continue with these
now to use one of these enums we would
type enum then our identifier name day
it's kind of like a data type and then
some variable name let's say today and
then you can set the sequel to one of
these constant names let's say that
today is sunday
so an important note with these
enumerations they're treated as integers
and not strings if i need to work with
one of these enums we're going to treat
them as if they were an integer so just
for an example i'm going to print the
value contained within today so this is
going to be an integer so we will use
the d format specifier and we will
display today
so since today is equal to sunday this
has an associated integer value of one
and if i display that
this will print the number one if i
change this to saturday well then it
will print the number seven
so an important note is that enums are
not strings but they can be treated as
integers now how does this make a
program more readable so let's write an
if-else statement that's going to check
what today is
first we'll begin with using the
associated integer value so if today
is equal to 1
or
today
is equal to 7
then that means it's either sunday or
saturday and let's print a message
let's say it's the weekend
party time
else we will print something else
i have to work today
so today is set to saturday that means
that saturday has an associated integer
of seven
so if today is equal to one or seven
well then we will execute this if
statement it's the weekend party time i
think i'm just going to add a new line
real quick
now if i set this to a different day of
the week let's say monday
well then i have to work today so the
way that this is written now
it's not too readable so instead of
using an integer value let's use the
associated name with each of these
constants so let's replace
one with sunday
and seven with saturday and i'll change
this to maybe sunday
so this is a lot more readable
especially if somebody else is reviewing
your code they may not understand why
today is equal to one or today is equal
to seven but this makes a lot more sense
oh so if today is equal to sunday or if
today is equal to saturday then we print
it's the weekend party time so that's a
huge benefit with enums is that they
help make a program more readable so to
declare enums you type enum then an
identifier and then you can list as many
constants as you would like and you can
give them an associated integer value
too so yeah those are enums if you'd
like a copy of this code i'll post this
to the comments section down below and
well yeah those are enums in c
hey uh what's going on everybody so in
this video i'm going to show you how we
can generate some random numbers in c
just as a disclaimer these are
pseudorandom numbers they are a set of
values or elements that are
statistically random so don't use these
for any sort of cryptographic security
now before we begin include these two
header files at the top
stdlib and time the first thing that
we're going to do is use the current
time to generate a seed which we need
for random numbers so we can use the s
rand function s for seed rand for random
and then we will pass in the current
time
time function pass and zero so we will
use the current time as a seed for
random numbers and then the function
that you need to generate a random
number using this seed is the rand
function so let's store our number
within a variable maybe number one int
number one and i will set the sequel to
then invoke the rand function now the
rand function will give you a random
number between 0 and 32 767.
so i'm guessing we probably don't need a
number that large so depending on the
range of numbers that we need we can use
modulus and then the maximum number that
you would like so if i'm rolling a six
sided dice i can say modulus six so the
modulus operator gives you the remainder
of any division so technically this
gives us a random number between zero
and five because computers always start
with zero but you can add an offset so
if i need the numbers one through six i
can just add plus one to the end and
then maybe i'll surround this section
with a set of parentheses just to make
this more readable so generate a random
number between zero and five add one
that gives us a random number between
one and six and let's just test that
theory so i'm going to use printf and we
are displaying an integer
and let's display number one so we
should have a random number between one
and six
and our random number is two and if i
run this again this will be a different
number probably yup six okay now if i
need to generate a couple different
random numbers i can just use this rand
function again so let's say we are
rolling three dice
number one number two and number three
and then i'll print these as well
so number one number two and number
three and i'll add a new line character
after each of these print statements
okay so this will give us three random
numbers between one and six one three
one
three five six
now it is important that we're
generating a random seed let me show you
what happens when i take this out
so this will give us the same numbers
over and over again six six five
six six five
and six six five so that's why it's
important that we use a seed for random
numbers now another thing too if you
need a larger number you can just change
this number for example i play a lot of
dungeons and dragons so i may need to
roll a 20-sided dice so i can just set
this to 20.
so 288
and let's try this again 12-5-4 so yeah
that's how to generate some random
numbers in c if you would like a copy of
this code i'll post this to the comment
section down below and well yeah that's
how to generate some random numbers in c
hey y'all what's going on everybody it's
you bro hope you're doing well and in
this video we're going to create a
number guessing game in c so sit back
relax and enjoy the show
if you find this video helpful please
remember to like comment and subscribe
your support will help keep this channel
running hey everybody so now that we
know how to generate some pseudo-random
numbers in c i thought this would be a
good opportunity for us to create a
number guessing game if we're working
with pseudorandom numbers be sure to
include at least these three header
files at the top of your program so
let's generate two constants min and max
const int and a naming convention for
constants is to make all of the letters
uppercase
so minimum will be the minimum number
that we will generate when we generate a
random number so let's pick a number
between maybe one and one hundred so min
will be one
and max will be 100 but feel free to
take the liberty to choose some other
numbers and we'll need int guess to
store a user's guess
int guesses to keep track of the guesses
and int
answer okay now if we're working with
random numbers we'll want to create a
seed and to do that we can actually use
the current time so use the s rand
function and pass in time pass in zero
so this uses the current
time as a seed to generate some random
numbers
and if we need a random number between
these two constants min and max this is
what we can do
so we will assign answer set this equal
to
call the rand function
and use the modulus operator
and set this to max and then we will add
min as an offset
so this will generate a random number
between these two constants 1 and 100 or
some other numbers if you have something
different so this line of code will
generate a random number
between
min
and max
now before we actually move on let's
test this just to be sure that
everything's working
so let's print whatever the answer is so
we're displaying an integer we are
displaying
answer
and let's see what this is
so my answer this round is 73 if i run
this again it is 93. now if i change
these values we will adjust the range in
which some random numbers will generate
so if i set min to 100 and max to 1000
that should change the range of numbers
and this time i have 334 but i'll change
this back to 1 and 100
okay so we know that we're generating a
random number so let's move on
let's create a do while loop so it's
going to take at least one guess in
order for somebody to guess the correct
answer so do curly braces we'll add
while and check a condition at the end
and the condition is guess
does not equal
answer so let's create a prompt and ask
the user to enter a guess
enter a guess
and we will use scanf to accept some
user input so this is an integer
and we are storing this within
guess so address of operator guess
now that we have our user's guess let's
compare it to our answer
so we'll use an if statement and check
to see if guess
is greater than answer so that means a
user guessed a number that was a little
too high
so let's print a message to let the user
know
to
hi
and then we can use an else if statement
else if
guess
is less than answer well then their
guess was too low
print too low
so if our guess is not greater than the
answer or less than the answer that
means they must have got it right
so within an else block let's print
correct
so then after our if else statements
let's increase guesses by one guesses
plus plus
the very best possible score a user can
get is one if they guess it on the first
try so before we finish a while loop we
will increment guesses by one
so then once we escape our while loop
let's print the user's final score
so we will print
the answer
this is an integer
and we are displaying
answer
and we will display the guesses it took
so
guesses
and display the value found within
guesses
and this part isn't necessary but i like
to add some text decorations
so maybe i'll add a bunch of asterisks
to make it look nice
let's run it
enter a guess i'll guess something right
in the middle between so maybe 50.
so that guess was too low so maybe 75
okay that was too high so our numbers
between 50 and 75 how about 62
that's too low so it's between 62 and 75
how about 69
that's still too low so between 69 and
75
maybe 72
that's still too low so it's between 72
and 75
73
all right that was the right answer i'm
just gonna fix one thing real quick
uh let's add a new line here okay let's
try this again okay until i guess i'll
try 50 again that's too high maybe 25
that's still too high what about 12
2 low
maybe 18
2 low 21
that's still too low 23 too low 24
and 24 was the correct answer all right
everybody so i thought that would be a
fun guessing game we could create for
practice if you would like a copy of all
this i'll post this to the comment
section down below and well yeah that is
a simple number guessing game in c
all right people so now that we know how
to create an array of strings i thought
this would be a good opportunity for us
to create a quiz game so before we begin
make sure to include these two header
files at the top of your program so
let's begin with a 2d array of
characters and these will store our
questions
and i'm going to set a maximum size for
each question to 100 bytes
and we can go ahead and initialize this
array with some questions so remember
with strings each string is its own
array
so let's ask maybe three questions but
feel free to pick any amount that you
like
and come up with any questions you would
like as well or you can copy me i don't
care
what year did the c language debut then
separate each string with a comma
then just to make this more readable i'm
going to go down to the next line
so this is question two now
who is credited with creating c
and one more question
what is the predecessor of c so now we
have some questions we'll need some
options this could be a separate 2d
character array
char
options
and i'll copy the dimensions from
questions
and we'll create four sets of options
for each question
this is the first set of options for the
first question and then let's add a
second set of options for the second
question
and a third set
now we'll create an answer key this will
be a one-dimensional array
so char
answers and the size will be three
and i will set this equal to
my answer key so the correct answers for
my quiz are b
so these will be individual characters
all separated with a comma b
so let's calculate the number of
questions that we have
so i will declare int
number
of
questions
and set this equal to
sizeof operator
pass in our two-dimensional array of
questions
and divide this by one of the elements
because they all have the same size
questions at index zero
and let's declare
char guess to store our guess
and int score to keep track of the
player's score
so now let's begin this i will print
the title quiz game
then add a new line
okay now we need to loop through all of
the questions so let's use a for loop
so we will have an index of i set to
zero
and i would like to loop through this as
long as i is less than the number of
questions that we have
then increment i by one
and to test this let's print our
questions
so printf
we're displaying a string so use the s
format specifier
questions add index of i
and then i'll add a new line character
after each printf statement okay let's
at least test this so we should cycle
through our questions
okay here are my questions what year did
the c language debut who is credited
with creating c
what is the predecessor of c
and this part isn't necessary but i'm
going to add some text decorations
i'll just display a bunch of asterisks
i'll do that before and after the
question
and let's try that again oh then add a
new line character
that's a little bit better
after our question let's display the
possible options
so we will need a nested for loop
so four
now this part's gonna be a little bit
tricky
we need to begin our for loop at every
fourth string
within our for loop let's set int j
equal to
i times four
so during the first iteration i will be
zero so zero times four is zero but
during the next iteration of the outer
for loop i is going to equal one so one
times four is four
so that way we will begin the inner for
loop with every fourth string within our
2d array of options
and the condition is going to be
j is less than
times 4
and then we would like to display
four strings
this for loop will cycle four times
beginning at every fourth string
and then we need to increment j by one
now let's print every option
so this is a string i'll add a new line
and we are printing
options at index of j
and let's test this just to be sure that
it works
okay so we have our question followed by
four possible options
now let's accept some user input after
the nested for loop currently our
program isn't going to wait around for
any user input that's why i displayed
all the questions and options okay we
will create a prompt to have a user type
in a guess
guess and we will use scanf to accept
some user input
we are accepting a single character
and use the address of operator guess
now let me show you what happens when we
run this real quick
so i'm just going to type in anything
let's say a
okay so we skipped question two
that's because after using scanf when we
accept a character we have that new line
character within the input buffer so we
need to clear that
so one way in which we can clear that is
to use scanf again
use the c format specifier and that's it
so this will clear the new line
character from input
buffer
so this should no longer just skip
question two
okay
let's say a
okay so we know we can accept some user
input now
now here's one thing what if somebody
types in a lowercase character i think
that should still count even though
we're looking for an uppercase character
so let's take our guess and use the two
upper function to make it uppercase
guess equals to upper
then pass in guess
so basically we're passing in our guess
making it uppercase and reassigning it
to our guess
and let's write an if else statement to
check our guess if it's equal to our
answer so if else
our condition within our if statement if
guess
is equal to answer at index of i
remember that we're still within the for
loop the outer for loop so we have that
index oh that's answers plural
if a user's guess is equal to the answer
then let's print correct
and then give them one point so printf
correct
and then increment our score score plus
plus
else we will print wrong and you can
give the correct answer if you would
like just do that within here now once
we cycle through all of the questions we
can display a user score so be sure to
do that outside of the for loop the
outer for loop that is so let's use
printf
and display
final score
so i'm going to display two values
so the first will be the player score
divided by the number of questions
so we have two integers to work with and
we are displaying score and number of
questions and then if you want you can
add some text decoration to make it look
cool
so i'm going to run through this quiz
once and intentionally get one question
wrong
so what year did the c language debut
that would be 1972 that's b who is
credited with creating c
uh let's say doc brown
so d
and what is the predecessor of c that
would be b
okay and my final score is two out of
three
so let's try that again and this time i
will try and get one hundred percent so
the correct answer is b
a dennis ritchie
and b
and my final score is three out of three
so yeah i thought that would be a simple
quiz game in c if you would like a copy
of this code i'll post this to the
comment section down below and well yeah
that's a simple quiz game in c
hey everybody let's talk about bitwise
operators these are special operators
used in a bit level programming
knowing binary is important for this
topic so if you don't know how binary
works i would recommend skipping to the
next topic but if you're comfortable
with binary well this video is for you
so let's begin i'm going to discuss five
different bitwise operators and or
exclusive or left shift and right shift
let's create three variables x y and z
x will equal six
y will equal twelve
and z will store our result and we will
set that to be zero
so i'm going to give you the binary
representation of each of these numbers
so six is
this number so we have eight bits that's
a byte and this is the binary
representation of the number six
12 would be this binary number
and zero zero is easy
that would be all zeros so let's use the
and bitwise operator so what we're going
to do is set z equal to x
and y
so imagine this imagine that we're
aligning all of these bits in columns
using the and bitwise operator we're
going to look at our operands x and y if
both of these are a one we will assign
one to our result
and let's begin with the first column on
the right both of these are zeros so our
result will stay at zero and with the
next column we have one and zero and
using the and bitwise operator both of
these need to be 1 in order to assign
one to our result so we will skip this
column now with our third column these
are both 1 so we will assign 1 to our
result the next column is zero and one
we skip it and the rest are just zero so
this binary number is the binary
representation of the number four
so let's test that z equals x and y and
let's print z
and equals we're displaying an integer
i'll add a new line
and we are displaying z
and let's see if this is for
yep our result z is equal to four now
let's move on to or so let's set this
back to zero
and we will set z
equal to x
or y or is represented by a single
vertical bar
and we will print
or let's try and guess what z is going
to be before we actually display it
with the or bitwise operator only one of
these bits needs to be one in order for
us to assign one to the result
so since these are both zero this will
stay at zero
this bit is one this one's zero so this
would be one and for the next column of
bits these are both one so that counts
as well
and we have a one in here so that is one
and the rest are just zero so this is
the binary representation of the number
fourteen and let's see if z is equal to
fourteen
yep we got that right
so let's set this back to zero
now with exclusive ore that is
represented by a carrot with exclusive
ore only one of these bits can be won if
neither or both of these bits are one we
don't assign anything so both of these
bits are zero they will stay a zero
we have one of these bits as one and not
the other so that counts as one now with
this next column both of these are one
and using exclusive ore only one of
these can be one so since these are both
ones we do not assign anything so we
keep that as zero and with the next
column only one of these is one so we
will set this to be one within the
result and this is the binary
representation of ten and let's test
that
equals x
exclusive or y
and we will print exclusive or equals z
and let's see if that's ten
yep z is equal to ten now here's left
shift we will shift these bits so many
spaces to the left using left shift so
we will set z
equal to x and then left shift which is
represented by two left angle brackets a
number of spaces let's begin with one
so we have x equal to six
what we're doing is shifting these bits
one spot to the left
and then adding zero at the end
and this is the binary representation of
the number 12. actually it's the same as
y currently these binary numbers are the
same
and let's print that
so
shift left
and z should equal 12
yep
and if i shift left twice
well then we are just moving these bits
one more space and now this is 24.
there you go
so you probably noticed that there's a
pattern every time we shift a binary
number to the left it effectively
doubles
now let's right shift
so let's copy this
paste it
and we will use two right angle brackets
and this is shift right
and let's set this to 6.
if we're right shifting we shift these
bits one spot to the right and this is
the binary representation of the number
three and if i print this
after shifting right once our result z
is three
every time we shift right we're
effectively cutting our number in half
now if i shift right again
we will shift these bits one more spot
to the right and we are going to
truncate this one at the end and this
will give us one that is the binary
representation of the number one
so technically half of three is 1.5 but
we can't store that 0.5 portion so it
just gets truncated all right everybody
those are just a few bitwise operators
they are special operators used in bit
level programming there's five that we
discussed today but there is another
known as the complement operator but
that's a little bit more complex and i
might save that for another video so
yeah those are bitwise operators if you
would like a copy of this code i'll post
this to the comments section down below
and well yeah those are some bitwise
operators in c
all right everybody so let's talk about
memory memory is an array of bytes
within ram and a memory block is a
single unit in bytes within memory
they're used to hold some value and a
memory address is the address of where a
memory block is located within ram i
like to think of memory as a street with
a bunch of different houses and each
house is a memory block which can hold
some value kind of like they're storing
a person and a memory address is the
house address on that street where that
memory block is located so this would be
a street address like one two three fake
street so when we declare variable let's
say we have char a when we declare a
variable we are setting some amount of
memory blocks aside to store some value
so the memory block that this variable
is using up has some memory address and
if i assign this variable a value let's
say maybe x well then if i was to go
into my computer's memory and look for
this address i would find this character
so imagine we're walking down the street
and we are looking for somebody's
address so we're going house to house
and we find a matching address if i were
to open their front door i should
probably knock first at least then i
will find the character x so that's kind
of an analogy i like to use when
thinking about memory so let's declare a
couple other characters we have char b
i'll give this a value of y
and char c
and i'll give this a character of z okay
so let's find the size of each of these
characters so i'm going to use a printf
statement i'm going to display an
integer
and the size of each of these characters
is within bytes
so i'm going to use the size of operator
and pass in one of my characters so i'm
going to pass in a
and i'll do the same thing with b and c
so the size of each of these characters
is one bite and i think i'm just going
to add a new line here
much better okay now we can actually
access the address of each of these
variables so each of these variables is
using one block of memory a single block
of memory is a byte
so within a printf statement i would
like to display an address so the format
specifier is p
and i will use the address of operator
then the name of one of my variables
so i'll display the address of variables
ab
and c
and then display each on a new line
so here are the memory addresses for
these three variables these addresses
are in hexadecimal these are the street
addresses of each of our memory blocks
on our fictional street
hey uh so this is bro from the future
just a quick crash course on hexadecimal
values with standard decimal values they
use the numbers 0 through 9 but with
hexadecimal you use the numbers 0
through 9 as well as a through f so that
gives you a total of 16 different values
for each digit so that's why there's a
mix of numbers and letters
so each of these variables uses one
memory block they use one byte of memory
so beginning with variable a
this has this street address but if we
go down to the next memory block you can
see that there is just one change f goes
down to e and then with variable c
this address goes down by one so f e d
these are contiguous memory blocks
they're all next to each other but now
if we switch to a different data type
like a short we haven't used these in a
long time
well shorts use two bytes of memory
as we can see here so these hexadecimal
addresses are now going down by two e d
a so each of these variables are using
two memory blocks we need an even larger
house even more memory blocks and they
use up two memory addresses
and then if i change these two integers
well they're going to use up even more
memory
so integers use four bytes memory
and these are the street addresses of
these three variables and doubles use
double the size of an integer
doubles use eight bytes of memory and
these street addresses are decrementing
by eight if this was a fictional street
with houses well doubles use up eight
bytes memory so think of these like
mansions they're using up a lot of space
now what happens with an array i'm going
to declare
char a
and declare an array this will be an
array of characters to begin with so
let's say character array b and i'll
give this a size of one
so i'm going to print the size of a and
the size of b
as well as their memory addresses
our single character a uses one byte and
this is the street address of this
variable and our array b
also uses up one byte
and this is the street address of where
this array begins if i set the size of
this array to 2 well then my array is
going to use 2 bytes
and now it has a different address to
accommodate the increased size of the
array and if i change this to 3 it now
uses 3 bytes of memory and it has a new
address and if i change the data type of
the array we'll have to take that into
consideration so a short uses two bytes
memory and we need three elements so
that's a total of six two times three is
six and if i change this to int and int
uses four bytes so four times three is
twelve and a double
is eight so eight times three is twenty
four so yeah that's kind of the basics
of memory so memory is an array of bites
within ram think of it like a street and
a street contains houses each house is a
memory block that can hold some value
think of each value as a person living
in that house and in order to find a
person we have to know their address
like a street address c refers to these
variables by their street address but
that's difficult for us to understand so
we just refer to this memory address as
a variable name because that's easier
for humans to work with so yeah that's
some basics of memory and c and in the
next video we're going to discuss
pointers so if you would like a copy of
my notes here i'll post them to the
comment section down below and well yeah
that's the basics of memory in c
hey yeah it's you bro hope you're doing
well and in this video i'm going to
explain the basics of pointers in c so
sit back relax and enjoy the show
if you wouldn't mind please like comment
and subscribe one like equals one prayer
for the youtube algorithm
oh yeah we finally made it to pointers
we're only about 40 topics in a pointer
is a variable like reference that holds
a memory address as a value to another
variable array etc some tasks are
performed more easily with pointers and
here's a comprehensive list of a few of
the benefits in this video we're going
to more or less focus on building a
solid foundation with pointers and
understanding how they work so let's say
we have a variable int edge and i'll
give this some value a variable has a
value and an address and let's display
the value and the address of this
variable using two print statements
so first i'm going to display the
address of this variable
address of age then i will use the p
format specifier to display an address
in hexadecimal and we are displaying the
address of age and ampersand is the
address of operator address of age and i
would also like to display the value of
age
value of age
and this is an integer
and we will display age
so variables have a value and an address
this is the address of this variable and
the value at this address
as you know there's tons of different
things we can do with a value of a
variable but there are things that we
can do with an address as well so we can
actually store this address within a
separate variable a variable like
reference and that is called a pointer
so to create a pointer we will make sure
these are of the same data type as the
variable we're pointing to age is an
integer so we will declare this pointer
of the integer data type and the next
step to declare a pointer is that we
will use an asterisk this is the in
direction operator and a common naming
convention for pointers is that you type
lowercase p the name of the variable
you're going to point to but make the
first letter uppercase and i'm going to
set this equal to
the address of age
so the address of age and the value at
this variable are the same and let's
test that theory
so this time i'm going to display
the address of age and the value of ph
and this will display an address so
change the format specifier from d to p
and i'm going to turn this line into a
comment for now okay so these addresses
should both be the same the address of
age as well as the value stored within
ph
so our pointer has its own address but
the value stored within it is an address
and we can access the value at this
address by using the indirection
operator so this time i'm going to print
the value of age
and the value
at
stored
address
and to dereference a pointer you will
type the pointer name ph appreciated
with the indirection operator
as my own personal nickname for the
indirection operator i call it the value
at address operator that's not any
official name that's just how i think
about it so we're extracting a value at
the given address within this pointer so
if i display the value of age and the
value at the stored address using the
indirection operator well both of these
are going to be the same
so we have 21 stored within our edge
and after dereferencing this pointer
we're extracting the value at this given
address
so you use the indirection operator when
you declare a pointer as well as when
you want to access a value at the stored
address
so with the data types of the pointer
you'll want to make sure they're
consistent c is a strongly typed
language so if i change the data type of
my pointer to char
using my compiler i'll receive a warning
initialization of char from incompatible
pointer type int now the actual data
type of a pointer is the same they use
eight bytes to store an address so i'm
going to print the size of our variable
as well as our pointer
so i'll change this data type back to
what it was originally and this time i'm
going to print the size of our age
variable as well as the size of our
pointer
size of age
and we're displaying an integer and this
will be in
bytes size of age
size of pointer age
and then i'm going to display a new line
okay so the size of our age variable is
4 bytes it's an integer integers use 4
bytes so even though we declared our
pointer as an integer
the actual size of our pointer is going
to be 8 bytes that's enough to store a
hexadecimal address
so just as good practice since c is a
strongly typed language you'll want to
be sure that the data type of your
pointer is consistent with the variable
that it's pointing to
now here's one thing that we can do with
pointers we can pass a pointer as an
argument to a function
so outside of my main function i'm going
to declare a function
void
let's say print
age
first we'll do this with passing and
integer so int age
and i will display the value of age
you
are
age years
old
and i will display my age variable
then at the end we will pass in our
variable
print edge and i will pass in age
for now i'm just going to turn all of
these into comments
okay so you know this works
you are 21 years old you could also pass
in a pointer too
so i'm going to this time pass in
pointer age
and we need to change the parameter from
an integer to a pointer
so precede the parameter name with the
indirection operator
and i'll rename this parameter as ph
in order to access the value of the
address stored within my pointer i need
to de-reference
so i will use the indirection operator
then type my pointer name ph
and this will do the same thing as
before
so yeah those are pointers oh and before
i forget you can declare and initialize
a pointer in two steps
but it would be good practice if you're
declaring a pointer to assign a value of
null
since we already declared this pointer
we do not need to use this indirection
operator again when assigning a value so
h equals the address of age
so it's considered good practice to
assign null if you're declaring a
pointer and not yet assigning a value so
yeah that's basically a pointer it's a
variable like reference that has a
memory address as value to another
variable array etc some tasks are
performed more easily with pointers and
to declare a pointer you use the
indirection operator and if you need to
access a value stored within a pointer
you type the pointer name preceded with
the indirection operator so yeah that is
a quick intro to pointers if you found
this video helpful please give this
video a thumbs up leave a random comment
down below and subscribe if you'd like
to become a fellow bro
all right let's do this here's how we
can write to a file in c let's create a
file pointer the data type is file and
i'll name this pf it's a pointer to a
file and i will set this equal to then
invoke the f open function we will pass
in a name we would like to give our file
let's name this test.txt but if you
would like this to be a different file
extension such as html well you can
change it to that then uh we'll keep
this as a plain text file just to keep
it simple and to write to a file there
is a second argument a mode so this
could be w for right a for append r for
read but we are looking for w for now so
it is good practice at the end of your
program to close any files that are open
so we will use the f close function and
pass in our pointer p f make sure to not
dereference it now to write a line of
text to our file we can use f print f
pass in our pointer p f do not
dereference it and then some string of
text let's say spongebob squarepants
so this file will be created in the same
folder as my c program so after running
this
we have a new text file within the same
folder and it says spongebob squarepants
what if i run this again and write
something different like patrick starr
so if the mode is w
then we will actually overwrite any
existing data already within this file
if we need to append a file we can use
the a mode for append so this time let's
append some text to the end of our
document
spongebob squarepants
and you have to keep track of any new
lines that you add too so if i run this
again and this time i am appending some
text
well patrick starr is still there and we
appended spongebob squarepants to the
end of our file
now if you would like to delete a file
here's how i'm going to turn all of this
into one giant comment
let's use a little bit of file detection
let's check to see if our file does
exist
within our if statement let's invoke the
remove method and we will pass in the
name or location to our file
test.txt if we remove this file
successfully it will return zero so if
after invoking the remove function if
this returns zero that's its exit code
that means that file was deleted
successfully let's print a message to
let the user know
that
file
was deleted
successfully
else we will print a different message
printf
that file was not
deleted
okay let's try this so here's my file
within the same folder if i run this
that file was deleted successfully
and that file is no longer within the
same folder you can see here that this
says deleted
and if i run this again we will not be
able to locate that file because it's
not there
now you can write a file to a different
location let's say i would like to write
a file to my desktop i can set a
relative file path or an absolute file
path i'll use an absolute file path
i'm going to get the file location of my
desktop so i'm just going to click on
one of these folders
go to properties
and copy this location
so with my file name i'm going to
precede this with an absolute file path
then any backslashes might need to be
double backslashes
so this time if i write a file
then this file will appear at this
location on my desktop
and here's that file test.txt and it
says spongebob squarepants well alright
everybody that is how to write append
and delete files in c if you found this
video helpful be sure to help me out by
smashing that like button leave a random
comment down below and subscribe if
you'd like to become a fellow bro
alright people so in this video i'm
going to show you how we can read the
contents of a file someplace on your
computer you can either place this
within the same folder as your c program
or someplace else i think it would be
cool if we read a file from our desktops
so i'm going to create a new file and
this is going to be a plain text file
and i'll write a poem i'll name this
poem.txt
here's my beautiful poem
are red
violets are blue
booty booty booty booty
rockin
everywhere
okay i'm going to save
and then i'll need the file location of
where this is located i'm going to right
click go to properties and copy this
file path and save it for later now to
read a file on your computer we'll need
to create a pointer the data type is
file
and i'll name this
p f and i will set the sql to then
invoke the f open function
pass in your file mine is poem.txt
so if this file is not within the same
folder as your c program you'll need a
relative or absolute file path since
this file is on my desktop i could use
an absolute file path
so preceding my file name i will paste
that location and then each backslash
may need to be a double backslash
because that is an escape sequence for a
backslash character okay the second
argument is the mode this time we are
going to read a file so pass in r for
the second argument then it's good
practice at the end of your program to
close any open files
we will invoke the f close function pass
in our pointer do not dereference it and
we will need one more thing a buffer a
buffer is going to act as a container an
array of characters to hold one line of
our text document one line at a time so
let's declare an array of characters
named buffer and i'll set the size to
255. our buffer is going to hold one
line of our file one line at a time and
to read a single line from our file we
will use the f gets function and there
are three arguments our buffer this is
what we're inserting a line of text into
a maximum input size i'll set this to be
255 to match our buffer and then a
pointer to the file that we're opening
and again make sure to not dereference
it so this will read a single line of
text and then let's print our buffer so
we're printing a string and we are
displaying whatever is currently within
our buffer
so after running this this will read a
single line of text whatever's at the
top
roses are red
now if i need to read all of the
contents of my file i can place this
section of code within a while loop
so with our condition i'm going to move
the f gets function within the condition
if we reach the end of a file f gets
will return null so let's continue this
while loop while f gets does not return
no if we do not return null then we will
print whatever's within our buffer now
if i run this this will display all of
the lines from my file roses are red
violets are blue booty booty booty booty
rocking everywhere and if you would like
you can add a little bit of file
detection so before we reach our while
loop let's check to see if that file
even exists before we attempt to open
and read it so let's check to see if our
pointer equals no if it is null that
means we could not locate this file so
i'm going to print
unable to open
file
and we'll create an else statement
else let's read and print the contents
of this file
okay so let's say i get the file
extension wrong let's say i'm looking
for an html file named poem and i try
and read this
unable to open file
but if we are able to locate this file
we will open it and read the contents
and then close this file so yeah
everybody that is how to read the
contents of a file line by line if you
found this video helpful please be sure
to help me out by smashing that like
button leave a random comment down below
and subscribe if you'd like to become a
fellow bro
oh yeah what's going on everybody it's
you bro hope you're doing well and in
this video we're going to create a game
of tic-tac-toe so sit back relax and
enjoy the show
if you find this video helpful please
remember to like comment and subscribe
your support will help keep this channel
running all right let's begin so the
first thing that you're going to need is
to include these files at the top of
your c program and we will create seven
different function prototypes so the
return type of this first function is
void and the name of this function will
be reset board our board is going to be
a 2d character array and our second
function is void print board
which will print our 2d character array
then with this next function this has a
return type event and this will check
free spaces
if after invoking this function this
function returns zero that means the
game is over there's no more places to
move and we will need void player move
when it's the player's turn to move
void computer move when it's the
computer's turn to move
char
check winner
so we have a few different win
conditions to check and void print
winner
and there is one parameter a single
character soap char so these are
function prototypes we tend to declare
these before the main function because
they help with readability after the
main function we will give each of these
a body
so copy and paste those functions and
then give each a body
and with the parameter for print winner
the parameter is char
winner now let's head back to the top of
our program and there's a few global
variables that we're going to declare we
could declare these as local variables
within the main function but this
program is going to get really
complicated then if we have to pass
around pointers to a two-dimensional
array so just to keep this simple i'm
going to create some global variables
there are some downsides to global
variables so i tend to not to like to
use these so we have a 2d array of
characters named board it's our game
board and let's create two constants
constant char player a naming convention
for constants is to make all of the
letters uppercase
and i will set this to a character of my
choice i could be oh or i could be x or
something else maybe i could be a dollar
sign whatever uh i'll set myself to be
an x and then let's create a constant
for the computer constant char
computer and computers will be o so
within the main function we will declare
a local variable char
winner
and i'll go ahead and set this to an
empty space so if our winner is in empty
space that means there currently is no
winner if player wins then that would be
an x if computer wins that's a no within
our main function this is acting as a
driver for our code so the first thing
we'll do is reset our board
so we are going to initialize all of the
different characters within our
two-dimensional board so let's head to
this function
so with our reset board function we need
nested loops
the outer for loop is for the rows the
inner for loop will be for the columns
int i set this equal to zero and i need
to iterate this for loop three times one
for each row that we have
and then we need an inner for loop
so change the index to j
and for each index within our 2d array
at index of i
and j i will set the sequel to an empty
space
so when we call the reset board function
each element within this 2d array of
characters will be an empty space
effectively clearing it
so back within the main function after
resetting our board let's print our
board
and fill in this function
so you can get creative with this
here's one thing that i'll use
so i'm going to print a space
a character a space
a vertical bar
space
character space vertical bar
space
character
these three format specifiers are
placeholders the first character i'm
going to display is our board at index
of zero zero that is row zero column
zero followed by board index zero one
then board zero two
and with the next printf statement let's
display something like this
a new line
three dashes
a vertical bar
three dashes another vertical bar
three dashes then a new line
okay so let's copy these
paste it once
and we need to change these indices
so with this third printf statement
these indices will be one zero one one
one two
and then do this again so copy paste
two zero
two one
two two
then at the end i'll add a new line
printf
new line
oh let me fix one thing
okay so this is what it should be
all right now back within our main
function we're going to create a while
loop and we'll surround our print board
function within this while loop
so our condition is if winner is equal
to an empty space
that means there currently is no winner
and after invoking the check free spaces
function
the value returned does not equal zero
so let's fill in this check free spaces
function
within the check free spaces function
let's declare a local variable int free
spaces and i'll initially set this to
nine then we need a nested for loops
and i equals 0 we will continue this as
long as i is less than 3
i plus plus
then create an inner for loop
change the index from i to j
and within the inner forward loop we're
going to write an if statement
and we are checking to see if our 2d
array of characters bored
at index of i and j does not equal an
empty space
if whatever spot we're on is currently
occupied we will take our free spaces
local variable and decrement it by one
then outside of our for loops we will
return
free spaces
if we return zero that means the game is
over there's no more places a player can
move
so heading back to our main function
it will be let's say the player's turn
to move first
so invoke the player move function and
we'll need to fill this in
with the player move function we will
declare two local variables intex into y
and we will ask a user to enter in a row
number and a column number of where they
would like to move to so using a printf
statement
we will enter
row number
one through three
and then use the scan f function to
accept some user input so this will be
an integer and use the address of
operator x
so a user is going to enter in numbers
one through three for which row that
they need but with arrays they always
begin with zero but a user is not going
to know that so with whatever the user
types in we will decrement x by one
so this gives us rows zero through two
technically
then do the same thing with our columns
enter column number one through three
address of operator y then decrement y
we will check to see if the coordinates
that the user gave are occupied or not
so using an if statement
we will check to see if our board
at index of x
and y
does not equal an empty space that means
that this spot is currently occupied by
another character
so let's print something to let a user
know
invalid move
else that spot is open
so take our board
at index of x and y
set this equal to our player character
so we're going to take all of this code
and place it within a do while loop so
write do
while
place your code that you just wrote
within there
and our condition
is if our board
at index of x
and y does not equal an empty space
if the spot that the player would like
to place their character is currently
occupied then we will ask them again to
enter some coordinates uh then within
our else statement we need to break out
of this while loop okay so that is
everything for the player move function
so then heading back to the main
function
after the player moves we will check to
see if there's a winner
winner equals then invoke the check
winner function
and we will fill in this function next
so find the check winner function and we
need to check all of the different win
conditions
so first we will check each row using a
for loop so this section of code we will
check our rows we'll need a for loop to
iterate three times one for each row
int i
equals zero continue this as long as i
is less than three
increment i by one so this if statement
is going to get a little bit funky we
need to check each set of horizontal
elements
so let's begin with board at index of i
and zero so that would be the top left
element and we are checking to see if
the character here is equal to this
character
so board at index i
and one
and we're checking to see if board at
index of i and zero is equal to board at
index of i and two so here we're
checking to see if this element is equal
to this element and this element is
equal to this element
if they're all consistent we have a
winner so we will return whatever
character is within one of these
elements let's say this one so return
board at index of i index of zero return
whatever character is within here this
section of code will check all of the
win conditions for each row but now we
need columns so check columns
and we can copy most of this so copy it
and paste it
then we just need to change these
indices around
so if board at index 0
is equal to board at index of one
and board at index of zero
i
is equal to board at index of two
i then we will return whatever character
is within board index of zero index of
one so this section of code will check
for any column when conditions then next
we have diagonals there's only two
check diagonals
so let's copy this section of code
paste it so our indices are 0 0
is equal to
1. 1 1 is in the middle and board at
index of zero zero
is equal to board at index of two two
if so then return zero
zero
then we have one more diagonal so copy
this
paste it
and here are the elements if board at 0
is equal to board at
1 1 so 0 2 is the bottom left 1 1 is the
middle and
board at zero zero equals board at two
zero that is the top right corner right
here so if we have a diagonal we have a
winner so return board at zero
2 let's say if after checking all of
these different win conditions there is
no winner
then let's return an empty character
that means there currently is no winner
so then head back to the main function
after invoking the check winner function
let's write an if statement to see if
the game is over
so our condition is if winner does not
equal an empty space that means there is
a winner
or after invoking the check free spaces
function and the value returned is zero
then we will break out of this while
loop this is everything done for the
player now we need to create a section
of code within our while loop for the
computer
so copy this section of code and paste
it and this time it will be the
computer's move
invoke the computer move function and we
will need to fill in the computer move
function
within the computer move function the
computer's move will be randomly
generated and to generate some random
numbers we'll need a seed
so to create a seed to generate random
numbers
invoke the s rand function
pass in time
invoke it pass in zero
and we will declare intex and into y we
will generate two random numbers between
zero and two now before we generate some
random numbers let's check to see if we
even have any free spaces available
so our if statement is going to be check
free spaces invoke it then if this is
greater than zero then we will generate
some random numbers
and we'll do so within a do while loop
so within this do while loop we will
generate two random numbers between 0
and 2.
x equals
invoke the rand function
modulus three
then y equals invoke the rand function
modulus three with our condition let's
check to see if the spot generated is
even open
so board at index of x
and y
does not equal an empty space so we will
keep on generating random numbers until
there is an open space then escape this
while loop so if we find an open space
let's take our board at index of x and y
set the sequel to our computer player
this is all within an if statement
else if there are no more spaces
available
we will invoke the print winner function
and pass in an empty space
this means that there is no winner it's
a draw
now let's fill in this print winner
function this function is fairly easy
if winner is equal to player
then we will print
you win
else if
winner is equal to computer
then we will print
you lose
else if there is no winner then it's a
tie it's a draw
it's a tie
within the main function we just have a
few more things to add so outside of our
while loop we will print our board and
print the winner
print
board
and print
winner
there is one argument whoever the winner
is
so let's run this once
enter row numbers one through three uh
let's say one
and one
so i moved here and the computer moved
to row three column two
uh let's say row three column three
okay so i moved here and the computer is
up here so i moved to row three column
three and our computer is at row one
column three
uh then i'll move to the middle two
two
and it looks like i won this round so
let's try this again and we will
intentionally lose so one one
two one
one two
two two
and unfortunately it looks like i lost
this time let's attempt to tie
and it looks like it's a tie so it looks
like this game is working so what if we
would like to ask the user if they would
like to play again we can easily place
our code within a do while loop so
within our main function
let's create char
response
and we will create a do while loop
so take all of this code after the do
while loop beginning with reset board
copy it
delete it
and then paste it within the do while
loop
at the top of our do while loop let's
reset winner and response
winner equals an empty space
and response equals an empty space
then heading to the bottom of our do
while loop let's ask if the user would
like to play again
so after displaying the winner let's
create a prompt
printf
would you like to play again
y for yes and for no
and i'm just going to clear our buffer
by using scanf and accepting a character
just in case there is a new line
character within our buffer then we will
use the scanf function and accept a
character after clearing our buffer
and we will use the address of operator
response
now just in case somebody types in
lowercase y i would still like to count
that as yes so i'm going to take our
response
set this equal to invoke the to
upper function
pass in response
and with this condition we will continue
playing while our response is equal to
the character y
and at the end let's print
thanks for playing okay let's run this
one last time
all right i win would you like to play
again
i'll type in y for yes
and we have a new game
all right it looks like i win so this
time i will exit by typing n
thanks for playing
so yeah everybody that is a game of
tic-tac-toe if you would like a copy of
this code i'll post this to the comments
section down below hey if you found this
video helpful you can help me out by
smashing that like button leave a random
comment down below and subscribe if
you'd like to become a fellow bro