精华内容
下载资源
问答
  • C语言字符输入的EOF

    千次阅读 2017-09-13 20:56:55
    好久没有用C写过程序了,今天与导师沟通,导师打算让我跟室里的其他两位...所以打算这几天花些时间好好把C语言的知识回顾起来,我的C语言的书早不知道扔到哪里去了,还好室友有一本经典的《The C Programing Language》

    好久没有用C写过程序了,今天与导师沟通,导师打算让我跟室里的其他两位职工做关于探测器数据的处理。因为涉及到硬件,主要要用到C语言来编写。依稀还记得当初大学时第一次用C写程序时得到满意结果的欣喜若狂,还有输出一大堆“烫烫烫烫”时的满头雾水。
    所以打算这几天花些时间好好把C语言的知识回顾起来,我的C语言的书早不知道扔到哪里去了,还好室友有一本经典的《The C Programing Language》,是C语言的设计者Dennis Ritchie及Brian Kernighan所著。这本书堪称C的经典,第一版问世于1978年,第二版自1988年面世后一直被广泛使用,至今未有新的版本出版,可见其内容的稳定性。
    从头开始看起,感觉这本书绝非以往的教科书式的照本宣科,简单的内容也不做过多重复。正如第1章所说

    目的是让读者能尽快开始编写C语言程序,因为我们深信,实际编写程序才是学习一种新语言的好方法。

    在介绍字符输入/输出时介绍了一个实用的程序用于统计行数、单词数与字符数。

    #include <stdio.h>
    
    #define IN 1    /* 在单词内 */
    #define OUT 0   /* 在单词外 */
    
    /* 统计输入的行数、单词数与字符数 */
    int main(int argc, char *argv[]) {
        int c, nl, nw, nc, state;
    
        state = OUT;
        nl = nw = nc = 0;
        while ((c = getchar()) != EOF) {
            ++nc;
            if (c == '\n') {
                ++nl;
            }
            if (c == ' ' || c == '\n' || c == '\t') {
                state = OUT;
            }
            else if (state == OUT) {
                state = IN;
                ++nw;
            }
        }
        printf("%d %d %d\n",nl, nw, nc);
    }

    getchar函数每次从输入流中读取一个输入字符,一般是通过键盘输入。
    while ((c = getchar()) != EOF)
    c是逐一读取输入流中返回的数值,当不是文件结束符(end of file)时就执行循环内容。一般情况下,EOF的数值为-1.
    刚刚开始运行程序时,我不知道该如何结束,到底输入什么作为EOF呢?直接输入-1是不行的,所以程序就一直在循环里,无法跳出。
    后来在网上搜索到了答案,原来EOF是通过如下的方式输入的。

    1.在Windows下输入:CTRL+Z+Enter;
    2.在Linux/Unix/Mac操作系统下输入:CTRL+D+Enter。

    输入结束后,按照你所对应的操作系统键入EOF就能得到正常的运行结果了。

    展开全文
  • C语言字符输入及输出的几种方式

    万次阅读 多人点赞 2018-02-06 00:12:56
    1.字符串数组+初始化 char s1[]="array"; //字符数组 char s2[6]="array"; //数组长度=字符串长度+1,因为字符串末尾会自动添‘\0‘ printf("%s,%c\n",s1,s2[2]); //array,r 2.字符串指针+初始化 char *sp=...

    1.字符串数组+初始化

    char s1[]="array";  //字符数组
    char s2[6]="array";  //数组长度=字符串长度+1,因为字符串末尾会自动添‘\0‘
    printf("%s,%c\n",s1,s2[2]);  //array,r

    2.字符串指针+初始化

    char *sp="pointer";  //字符指针
    printf("%s,%c,%c\n",sp,*sp,*(sp+2));  //pointer,p,i
    3.数组+scanf

    char s1[6];	
    scanf("%s\n",s1);
    printf("%s,%c\n",s1,s1[2]);  //array,r
    4.指针+scanf
    #include <stdio.h>
    #include<stdlib.h>   //该头文件别忘加,否则使用malloc会报错
    int main(){
      char *sp;
      sp=(char *)malloc(sizeof(char));
      scanf("%s\n",sp);
      printf("%s,%c\n",sp,*sp);//pointer,p
      return 0;
    }
    5.指针+数组+scanf

    char str[60], *sp=str;//将数组的首地址str赋给指针变量sp
    scanf("%s\n",sp);
    printf("%s,%c,%c\n",sp,*sp,*(sp+3));//pointer,p,n
    printf("%s,%c,%c\n",str,str[0],str[3]);//pointer,p,n
    6.注意:如下方法控制台运行会终止

    char *sp;//sp未初始化指向不明
    scanf("%s\n",sp);
    printf("%s\n",sp);
    7.用scanf和gets(字符数组名或指针)进行输入的区别:

    char str1[60],str2[60];
    gets(str1);  //gets()函数将接收输入的整个字符串直到遇到换行为止
    printf("%s\n",str1);
    scanf("%s\n",str2);//scanf如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理
    printf("%s\n",str2);

    8.使用while(scanf("%d",&n)!=EOF){ }实现多组测试数据输入,而不在输入完一组数据后退出控制台

    char s1[60],s2[60];
    int cnt; //用来测试scanf返回被输入函数成功赋值的变量个数
    while((cnt=scanf("%s%s",s1,s2))!=EOF){  //当按下ctr+z终止输入时,scanf会返回EOF(-1)\n
       printf("scanf返回了%d, s1是%s,s2是%s, 这行输出下方可以继续进行输入\n",cnt,s1,s2);
       //scanf若成功输入str1和str2则返回2
    }
    printf("%d",cnt);//当按下ctr+z后会执行该条输出-1
























    展开全文
  • C语言字符输入输出函数

    千次阅读 多人点赞 2020-03-21 18:36:15
    C语言字符输入输出函数 (1)putchar()函数 格式: putchar© 功能:向终端输出一个字符 注意:输出的时候不会加回车 (2) getchar()函数 格式:字符型变量=getchar () 功能:从标准输入设备上读取单个字符,返回值...

    putchar()函数

    • 格式: putchar( c )
    • 功能:向终端输出一个字符
    • 注意:输出的时候不会加回车

    getchar()函数

    • 格式:字符型变量=getchar ()
    • 功能:从标准输入设备上读取单个字符,返回值为字符。
      例:
      在这里插入图片描述

    puts()函数

    • 格式: puts(s);
    • 功能: 向标准输出设备输出已经存在的字符串,并换行(puts()把最后的’\0’变成’\n’)。

    gets()函数

    • 格式:gets(s);
    • 功能:读取标准输入设备输入的字符串,直到遇到回车键结束。
    • 注意:这和scanf()函数读取有区别的,scanf()函数在读取的时候遇到,空格 , \t ,\n 都结束读取,而gets()只是遇到回车(\n)结束读取。
    • 特别注意:gets()函数不会对接受的字符串的buffer进行边界检测,会造成越界从而产生bug。
      可以用fgets()。例:fgets(s,10,stdin); 最多读取9个字符到s,fgets()会默认的给最后加一个’ \0 '。
      例:
      在这里插入图片描述

    getche()函数

    • 需要头文件 conio.h
    • 格式:字符型变量=getche()
    • 功能:输入一个字符后会立即读取,不用等待用户按下回车键,返回值为字符。(带回显)

    getche() 就比较有意思了,它没有缓冲区,输入一个字符后会立即读取,不用等待用户按下回车键,
    这是它和 scanf()、getchar() 的最大区别。

    getch()函数

    • 需要头文件 conio.h
    • 格式:字符型变量=getch()
    • 功能:输入一个字符后会立即读取,不用等待用户按下回车键,返回值为字符。(不带回显)

    getch() 也没有缓冲区,输入一个字符后会立即读取,不用按下回车键,这一点和 getche() 相同。getch() 的特别之处是它没有回显,看不到 输入的字符。所谓回显,就是在控制台上显示出用户输入的字符;没有回显,就不会显示用户输入的字符,就好像根本没有输入一样。

    回显在大部分情况下是有必要的,它能够与用户及时交互,让用户清楚地看到自己输入的内容。但在某些特殊情况下,我们却不希望有回 显,例如输入密码,有回显是非常危险的,容易被偷窥。
    例:
    在这里插入图片描述
    在这里插入图片描述
    getche() 和 getch() 不是标准函数,只能用于 Windows。

    展开全文
  • c语言字符输入

    万次阅读 多人点赞 2018-08-28 10:56:36
    如果想把一个字符串读入程序,首先必须预留储存该字符串的空间,然后用输入函数获取该字符串。 分配空间 1.char *name; 2.char name[81];   1,2 的不同点:1.的指针在未进行初始化之前可能指向任何地方。  ...

       如果想把一个字符串读入程序,首先必须预留储存该字符串的空间,然后用输入函数获取该字符串。

    分配空间

    1.char *name;

    2.char name[81];

     

    1,2 的不同点:1.的指针在未进行初始化之前可能指向任何地方。

                            2.已分配了81个字节的地址。

      char *name;

      scanf("%s",name); // 错误 会将输入的字符串拷贝到任何地方可能会擦写掉程序中的数据或代码。

    为字符串分配内存后便可读入字符串。

    利用输入函数获取字符串

      1.scanf()函数。

    弊端:只能读取一个单词。

    原理:如果输入了空格会认为字符串结束,将空格的字符作为下一个输入处理。

    例如:scanf("%s",name); 输入:aas df 会将aas放入地址中再在后面自动添加'\0',并将df作为下一个输入处理。

    #include <stdio.h>
    int main()
    {
    char ch1[10],ch2[10];
    
      scanf("%s",ch1);
      scanf("%s",ch2);
      printf("%s,%s",ch1,ch2);
    return 0;
    }

    2.gets()函数。

    弊端:该函数只知道数组的开始处,并不知道数组的大小,如果输入的字符串过长容易溢出,可能擦写掉程序中的其他数据导致程序异常终止。

    原理:读取整行的输入直至遇到换行符,然后丢弃换行符,储存其余字符,并在这些字符末尾添加一个空字符使其成为一个字符串。

    #include <stdio.h>
    int main()
    {
    char ch1[10],ch2[10];
    
      gets(ch1);
      scanf("%s",ch2);
      printf("%s,%s",ch1,ch2);
    return 0;
    }

    3.fgets()函数。

      gets()的参数只有数组的地址,而fgets()函数的参数有三个。

      fgets(将要输入字符串的地址,读入字符的最大数量,要读入的文件) 

    通过第二个参数来限制读入字符的数量解决gets()的溢出的问题。

    终止条件:①读入n-1个字符②遇到第一个换行符

    原理:①终止在末尾添加一个空字符。

               ②终止保留换行符再在末尾添加一个空字符。 

    返回值:当读到文件末尾时返回空指针。  

     

     

     

     

    展开全文
  • C语言字符输入输出

    万次阅读 多人点赞 2018-01-26 21:30:39
    C语言中,输出字符串的函数有两个: puts():直接输出字符串,并且只能输出字符串。printf():通过格式控制符 %s 输出字符串。除了字符串,printf() 还能输出其他类型的数据。 这两个函数前面已经讲过了,...
  • C语言字符串之输入中文

    千次阅读 2020-02-25 17:27:42
    C语言中的字符串是以ASCII码表的形式存入的,输入英文字符是以英文字符对应的ASCII码的形式进入寄存器中的,例如输出hello world!: #include<stdio.h> int main() { char str[]="hello world!"; printf("%s\n...
  • C语言字符类型输入方式选择

    千次阅读 2020-02-26 19:46:15
    C语言中的字符型用关键字char表示,它实际存储的是字符的ASCII码。字符常量可以用单引号法表示。在语法上可以把字符当作int型使用。 2、scanf("%s", s);会读入一个不含空格、TAB、和回车的字符串,存入字符数组s。...
  • C语言字符输入与输出函数

    万次阅读 多人点赞 2015-01-15 14:57:49
    字符输入&输出
  • c语言字符串空字符

    2021-01-09 12:21:45
    c语言字符串空字符 初步结论:1.只有将字符数组初始化为字符串,空字符后面才会自动清为空字符; 2.若是后续赋值(或利用gets_s、%输入)为字符串,则只添加空字符,后续的仍为其他内容; 3.若利用for循环给字符数组...
  • C语言输入字符字符

    千次阅读 2019-04-14 15:53:11
    1.C语言输入字符字符C语言有多个函数可以从键盘获得用户输入,它们分别是: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。 getchar()、getche()、getch():这三个函数都用于输入单个字符。...
  • 版权归原作者。 决心使用C语言来做算法题,开头很痛苦。主要是困在了C字符串的输入和赋值。 现总结一下: 1、字符串指针一定要开辟空间后在做输入 char * str; str=(char*)malloc(100*sizeof(char)); s...
  • C语言字符串的输入输出处理

    千次阅读 多人点赞 2020-06-09 00:58:00
    题目 1094: 字符串的输入输出处理 时间限制: 1Sec 内存限制: 64MB 提交: 13472 解决: 4902 题目描述 字符串的输入输出处理。 输入 第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串...
  • c语言字符

    万次阅读 多人点赞 2018-12-05 14:04:48
    c语言字符串都是以“/0”结尾 而这里就有三个概念 EOF /0 -1 /n 首先c语言中所有字符串的结尾标志都是/0 是字符串结尾的标志 它是一种转义符 而EOF是文件流结束标志代表着 文件(file),也可以是标准输入...
  • * 函数功能: 输入一串字符时,可以随时按Esc键退出 * 函数原型: int input_string(char *buf) * 参数: buf: 字符类型指针,屏幕输入字符的存放地 * 返回值: 1:从屏幕输入字符串存放成功 * 0...
  • C语言如何输入输出一个字符

    万次阅读 多人点赞 2019-03-28 22:41:50
    C语言习题中,经常遇到字符串的输入输出,我们在这里简单总结一下字符串的输入输出方式。 C语言中用一般用数组来处理字符串,这里暂时讨论一维数组的输入输出,二维之后再加上。 定义:char 数组名[常量] 输入输出:...
  • 输入为多个字符串(每个字符串长度不超过100个字符),每个字符串占一行,输入的行为“***end***”时表示输入结束 输出说明 输出其中最长的一行长度后换行再输出最长行的内容,如果最长行不止一个,则输出其中的...
  • C语言 字符串分类统计 输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数 题目: 输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数 样例输入: aklsjflj123 sadf918u324 asdf...
  • 如果输入字符个数大于定义的数组长度,则会引起危险, 因为gets不会判断缓存是否溢出,会把数组后面的内存覆盖。 scanf(): scanf虽然也能输入字符串,但是遇到空格就停止了。 解决方法: 目的:输入字符串可以有...
  • C语言字符串例题

    千次阅读 2019-03-02 20:56:35
    C语言字符串例题 第一题:函数实现字符串两端去除空格字符 #define _CRT_SECURE_NO_WARNINGS #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; #include&...
  • C语言字符串常用操作函数C语言字符串、文件操作常用操作函数标准输入/输出重定向文件操作补充 C语言字符串、文件操作常用操作函数 字符串输出 - puts int puts(const char *str) 字符串写入到标准输出 stdout 字符...
  • C语言scanf输入字符串,举例详解

    千次阅读 2020-05-12 18:24:55
    除了在定义字符数组时初始化外,还可以通过scanf从键盘输入字符串。下面写一个程序: #include <stdio.h> int main(void) { char str[10]; //str是string的缩写, 即字符串 printf("请输入字符串:"); scanf("%...
  • c语言实现输入随意长度字符

    千次阅读 2020-10-20 21:59:37
    c语言中因为没有字符串类型,所以我们只能用字符数组来保存字符串常量 而如果想实现输入任意长度的字符串且都能被接受,就需要如下操作 int b;//这个b是想输入字符串的长度 scanf("%d\n", &b); char* a = ...
  • c语言scanf输入字符We have to read tree values: integer, float and then character using only one scanf() function and then print all values in separate lines. 我们只需要使用一个scanf()函数读取树值:...
  • C语言字符逆序

    千次阅读 多人点赞 2020-06-09 00:30:39
    写在前面:这里是小王成长日志,一名在校大学生,想在学习之余将自己的学习笔记分享出来,记录自己的成长轨迹,帮助可能需要的人。欢迎关注与留言。... 第一行输入字符串。 输出 输出转换好的逆序字.
  • 简单的C语言字符数组逆序 输入 i am a student 输出tneduts a ma i 用指针实现代码如下
  • C语言 字符类型

    千次阅读 2019-03-24 22:01:20
    字符 在给字符型变量赋值时,需要用一对英文半角格式的单引号(’ ')把字符括起来。 Name Description Size* Range*signed: wchar_t Wide character. 2 or 4 bytes 1 wide character 字符变量实际上并不是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 231,192
精华内容 92,476
关键字:

c语言字符输入

c语言 订阅