循环-c语言关于字符getchar()的问题

问题描述

c语言关于字符getchar()的问题
输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数
测试用例 1 ni12$$?
字母=2空格=0数字=2其它=2?

下面是我写的程序,思路就是让ch的初始值为0,然后进入for语句循环,直到输入回车为止,中间还加了个if ch='
' break;用来跳出。但是无论输入什么结果不知为何都是0。。。我上网查说要用while((ch=getchar())!='
') 但我不太明白我这种方式为何不可以??

 #include <stdio.h>void main(){char cha=0b=0c=0d=0;for(ch=0;ch!='
';){ch=getchar();if ch='
' break;if(('a'<=ch&&ch<='z')||('A'<=ch&&ch<='z')) a++;else {if(ch==' ') b++;else {if('0'<=ch&&ch<='9') c++;else else d++;}}}printf(""字母=%d空格=%d数字=%d其他=%d""abcd);}

解决方案

 if ch='
' break;

这个删除

解决方案二:
许多初学者都习惯用?char?型变量接收?getchar、getc,fgetc?等函数的返回值,其实这么做是不对的,并且隐含着足以致命的错误。getchar?等函数的返回值类型都是int?型
下面是getchar()的定义:
[html]?view?plaincopyprint?
?
1?int??
2?getchar?()??
3?{??
4???int?result;??
5?......
答案就在这里:C语言中getchar中的问题

时间: 2024-10-29 07:48:15

循环-c语言关于字符getchar()的问题的相关文章

C语言 以字符形式读写文件详解及示例代码_C 语言

在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块).本节介绍以字符形式读写文件. 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中写入一个字符.主要使用两个函数:fgetc()和fputc(). 字符读取函数 fgetc fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符.它的原型为: int fgetc (FILE *fp); fp 为文件指针.fgetc() 读取成功时返回读取到的字符,

C语言中字符的输入输出以及计算字符个数的方法详解_C 语言

C语言字符输入与输出 标准库提供的输入/输出模型非常简单.无论文本从何处输入,输出到何处,其输入/输出都是按照字符流的方式处理.文本流是由多行字符构成的字符序列,而每行字符则由 0 个或多个字符组成,行末是一个换行符.标准库负责使每个输入/输出流都能够遵守这一模型.使用标准库的 C 语言程序员不必关心在程序之外这些行是如何表示的. 标准库提供了一次读/写一个字符的函数,其中最简单的是 getchar 和 putchar 两个函数.每次调用时,getchar 函数从文本流中读入下一个输入字符,并将

c语言-C语言计算字符长度的函数 strlen的问题

问题描述 C语言计算字符长度的函数 strlen的问题 下面这段: int main(){ char s[]="hello world"; char *n; n=&s[0]; int t=strlen(n); printf("%d ",t); } 得到字符长度是11,但是如果把char s[]="hello world";改为char s[11]="hello world"; 最后的值就会变成17,多出来的6是怎么回事

C语言统计字符个数代码分享_C 语言

C语言实现统计字符个数 #include<stdio.h> int main() { int sz[10]={0},zm[26]={0},z[26]={0},i,space=0,e=0,t=0; char c; printf("请输入一段字符,统计其中各字符的数量\n"); while((c=getchar())!='\n') { if(c<='z'&&c>='a') zm[c-'a']++; else if(c<='Z'&&

指针-c语言中字符数组初始化问题

问题描述 c语言中字符数组初始化问题 字符数组初始化1: char str[]=""123"";//不报错2: char str[4]; str=""123"";//不能将const char[4] to char[4]字符指针初始化1: char *str=""123"";//不报错2: char *str; str=""123"";//不报错求

Java语言中字符的处理

山西省网络管理中心任军 ----摘要:本文主要讨论了Java语言中字符的特殊表达形式,尤其是中文信息的表达处理,阐述了字符处理的关键是要将十六位Unicode字符,转换为本地下层平台,也就是运行Java虚拟处理机的平台能够理解的字符形式. ----关键词:Java.字符.8位.16位.Unicode字符集 ----Java是一种编程语言.一个运行系统.一套开发工具和一个应用程序编程界面(API).Java建立在C++的熟悉.有用的特征之上,而取消了C++的复杂的.危险的和多余的元素.它是一个更安

c语言输入字符删除特定字符问题

问题描述 c语言输入字符删除特定字符问题 输入一行字符,要求删去其中的某个字符后输出,要删除的字符由键盘输入. 解决方案 #include#includevoid main(){ char s[81]; int in; printf(""input a string:""); gets(s); printf(""input n:""); scanf(""%d""&n); for(

c语言-C语言关于字符指针变量和字符数组的说法

问题描述 C语言关于字符指针变量和字符数组的说法 下列关于字符指针变量和字符数组的说法错误的是 A)字符指针变量的值可以变化 B)字符数组的值可以变化 C)字符指针变量代表了一个地址 D)字符数组代表了一个地址 ====答案选B,求解释? 解决方案 选择B.字符数组相当于指针常量. 解决方案二: 数组定义时系统给开辟内存单元,数组名相当于数组的开始地址是不能变化的 解决方案三: C语言字符指针和字符数组C语言中,为什么字符串可以赋值给字符指针变量字符数组和字符指针

c语言中字符数组系统初始化为什么?

问题描述 c语言中字符数组系统初始化为什么? c语言中声明一个字符数组,如果自己没有初始化,那系统初始化为什么?是被初始化为空字符吗?我的实验结果好像是空字符 解决方案 在debug调试下,vc会将它初始化为0xcc 0xcc...,也就是"烫烫烫烫...",release运行的时候,vc++不会初始化,内容随机,但是很大可能是0,因为只有在堆内存被重新分配的时候,才可能出现其他值. 其它编译器不好说. 解决方案二: C语言字符数组的初始化C语言字符数组的初始化