C语言学习 18-10-22

getchar函数详解与++i和i++的区别
本文详细介绍了getchar函数的使用方法,包括读取连续字符并回显,以及如何动态保存字符串。同时,解析了++i与i++在C/C++中的不同行为,通过实例展示了其在条件判断中的应用。

getchar函数

1. 使用getchar读入连续字符并回显

getchar函数返回的是一个int型的数据,用来保存输入字符的ASCII值。

#include <stdio.h>

int main()
{
	char c;
	while((c = getchar()) != '\n')
	{
		printf("%c", c);
	}
	printf("\n");
	return 0;
}

2.使用getchar()函数来动态保存一个字符串

需求:当从键盘输入的字符串长度大于默认申请的内存时,自动从新申请一个更大的空间来保存字符串。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *GetString();

int main()
{
   char *p = GetString();
   
   return 0;
}

char *GetString()
{
   int str_size = 5;
   char *old_str = (char*)malloc(str_size);
   char *p_old = old_str;
   char *new_str = NULL;
   int count = 0;
   char char_temp;
   while((char_temp = getchar()) != '\n')
   {
   	*old_str = char_temp;
   	old_str++;
   	count++;
   	if(count + 1 == str_size)
   	{
   		*old_str = '\0';
   		str_size += 5;
   		new_str = (char*)malloc(str_size);
   		strcpy_s(new_str, str_size, p_old);
   		old_str = new_str + count;
   		free(p_old);
   		p_old = new_str;
   	}
   }
   *old_str = '\0';
   return p_old;
}

3. ++i与i++的区别

例1:int a=0; int b=1; a++ && b++; a++ || b++;求执行完语句后a,b的值各为多少?

本题涉及短路求值
当执行 a++ && b++ 时,a++ 表达式返回0,故 && 左式为假,不再执行右式;当执行 a++ || b++ 时,a++ 表达式返回1(因为上一条语句执行了a++后,本次语句执行时 a 为1,故本次 a++ 返回1),则又不执行右式。

故最终的结果为 a=2, b=1。

例2:int a = 1; printf("%d", ++a); 的输出为多少?

答案为2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值