getch和getche都是读入单个字符的,不同的是getch不会将读书的输出来,而getche就会再把它输出到屏幕上。
比如你用getch读入,按了键以后屏幕上没有输出,但是实际上已经读入了。而getche会把你刚按的再输出来。
getchar则是读入字符串的。
#include<stdioh>
#include<stdlibh>
main()
{
char i;
printf("getchar输入是字符,可以查看ASC表\n");
i=getchar();
printf("十进制为%d\n",i);
printf("十六进制为%x\n",i);
while(1);
}
for ( i=0;string[i]!='\0';i++); //分号去掉
for ( i=0;string[i]!='\0';i++); // 分号去掉
'\0' 不好判断。scanf 读不进 '\n' ,遇到 '\n' 要你再输入东西。
改用 getchar() 较好。
#include <stdioh>
#include<stdlibh>
main(){ char s[100];
int i;
printf("enter a string:");
i=0;
while(1){
s[i]=getchar();
if (s[i]=='\n')break;
i++;
}
s[i] ='\0';
printf("%s",s);
}
scanf("%s",str2)的实际 *** 作是将str2作为一个指针,按照字符串(%s)来读取和识别标准输入的内容,并将读取到的内容存储到指针str2所指地址中。
你的str1被赋值为空(null),即为0,所有的系统均不会允许读写地址0上的内容,所以报错。
可以试着申请一个地址并赋值给str1,这样就能读写了,最后记得释放内存
#include <stdioh>#include <stdlibh>
int main(int argc, char argv[])
{
char str1 = (char )calloc(1, 10);
scanf("%s", str1);
printf("%s", str1);
free(str1);
}
char s[]="ssssabedbewb";
int len;
char p;
s[2]; //第一种方法
printf("输入输入字符串的长度:");
scanf("%d",&len);
printf("输入字符串:");
p=malloc(len);
scanf("%s",p);
printf("%c",p[3]); //第二种方法
显然第二种方法更灵活,不过就是有点烦
办法很多,举一二三:
虽说“不定长”,但长度要求不是很大时,可声明一个足够大的字符型数组来解决。缺点是空间略有浪费。
声明两个字符型指针,先为其一动态分配内存,当输入满时为另一个分配更大些的内存,把已经输入的内容拷贝过去,释放原来较小的空间;交换指针,继续输入,如此不断。缺点是瞬间需将近两倍实际需要的空间。
用链表,这比较正宗,但需要5位以上的空间。
第2在实际工作中使用过,一个字:爽!
你写的程序就是这样的啊,当然就这样输出了#include<stdioh>void main(){ char s1[50],s2[50]; scanf("%s",s1); scanf("%s",s2); printf("%s\n",s1); printf("%s\n",s2);}你要输人的话也不是这样输的啊 scanf("%s",s1); 只是给s1[0]输入了值; scanf("%s",s2); 也是一样
追问:
我现在知道了为什么是这样,但我希望能够读取空格,该用哪个函数?
回答:
getchar()学过没?没学过,自己看
追问:
学过的,但那是输入单个字符嘛
回答:
请高清楚 空格 是字符, 你不用这个怎么读入呢?你可以查下scanf函数和getchar函数 那就用gets()函数 是读入字符串的 不过我觉得你现在可能还理解不了 这些函数的区别,只是朦朦胧胧
补充:
我说错了 (你要输人的话也不是这样输的啊 scanf("%s",s1); 只是给s1[0]输入了值; scanf("%s",s2); 也是一样)-----------这句是不对的
以上就是关于C语言中读取一个字符全部的内容,包括:C语言中读取一个字符、用getchar获取输入的字符,并用printf分别打印出它的十进制整型,十六进制的数值。用最简单的C语言编写、c语言 输入一个字符串,一个个读入字符,再输出。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)