Character Controller - My movement speed changes dont stick.

I am trying to make my crouch script change the movement speed. The way I do it now, it only works for the 0.0001 second or so that the keycode is clicked. However I do need crouching to stay:
-Click C while standing = Crouch
-Click C again while crouching = Stand back up

Any ideas?

Crouching
if (Input.GetKey(KeyCode.C) && characterController.isGrounded)
{
Crouch(forwardSpeed,sideSpeed);
}

public void Crouch(float forwardSpeed, float sideSpeed) {
		if (!isCrouching) //Crouch
		{
			isCrouching = true;
			isProne = false;
			isStanding = false;
			characterController.height = crouchHeight;
			
			forwardSpeed = Input.GetAxis ("Vertical") * crouchingSpeed;
			sideSpeed = Input.GetAxis ("Horizontal") * crouchingSpeed;
			
			Vector3 speed = new Vector3 (sideSpeed, verticalVelocity, forwardSpeed);    
			speed = transform.rotation * speed;
			characterController.Move (speed * Time.deltaTime);
			
			//		characterController.center = Vector3(0, -0.5, 0);
			//		tempCamera.transform.localPosition.y -= crouchHeight;
		}
		else //Stand back up
		{
			isCrouching = false;
			characterController.height = charHeight;
			isStanding = true;
			isProne = false;
			//		characterController.center = Vector3(0, 0, 0);
			//		tempCamera.transform.localPosition.y += crouchHeight;
			forwardSpeed = Input.GetAxis("Vertical") * movementSpeed;
			sideSpeed = Input.GetAxis("Horizontal") * movementSpeed;
			
		}
	}
         **Normal Speed**
   forwardSpeed = Input.GetAxis("Vertical") * movementSpeed;
		sideSpeed = Input.GetAxis("Horizontal") * movementSpeed;

		Vector3 speed = new Vector3 (sideSpeed, verticalVelocity, forwardSpeed);	
		speed = transform.rotation * speed;
		characterController.Move (speed * Time.deltaTime);

You are calling the method only once, when the user presses the key. Instead you can set a bool to true when ctrl+c, and then check that in update. Pseudo code:

// Start standing.
bool isCrouching = false;

if (Input.GetKey(KeyCode.C) && characterController.isGrounded) { 
isCrouching = !isCrouching;
}

void Update() {
if (isCrouching) {
Crouch(forwardSpeed,sideSpeed); 
}
}