fgets函数从文件读取'\n'并存储,在'\n'后再增加一个'\0'构成字符串。

但fgets函数需要指定读入的字符数,如果指定了n,则最多只能读取n-1个。fgets在读取了n-1个字符、读到了'\n'或遇到了EOF三种情况之一时都结束读取。

验证代码如下:

#include <stdio.h>
#include <string.h>
#define MAXLENGTH 101
int main(){

char str[MAXLENGTH];
fgets(str, MAXLENGTH, stdin);
int length = strlen(str);
int str_length = strlen(str);
int num = 0;
printf("%d\n",str_length);
printf("%s",str);

for (int i=0; i<= length; i++){
if (str[i] ==' '){
num++;
str_length--;
printf("num=%d\n",num);
}
if (str[i] == '\0'){
printf("0000,i=%d\n",i);
}
if (str[i] == '\n'){
printf("nnnn,i=%d\n",i);
}
}
num++;
printf("num = %d \n",num);
//printf("%2f",(float)(str_length)/num);

return 0;
}

结果:

c中fgets与strlen的更多相关文章

  1. C文件操作的语言fgets()

        谈fgets(..)功能.     原型  char *  fgets(char * s, int n,FILE *stream);     參数:          s: 字符型指针.指向存 ...

  2. C语言文件操作之fgets()

        来说一说fgets(..)函数.     原型  char *  fgets(char * s, int n,FILE *stream);     參数:          s: 字符型指针, ...

  3. fputs与fgets

    1.      fputs 函数名: fputs  功  能: 送一个字符到一个流中  用  法: int fputs(char *string, FILE *stream); 说明: fputs是一 ...

  4. php 文件上传类,功能相当齐全,留作开发中备用吧。

    收藏一个经典好用的php 文件上传类,功能相当齐全,留作开发中备用吧. 好东西,大家都喜欢,才是真的好,哈哈!!! <?php  /**   * 文件上传类   */  class upload ...

  5. sizeof, strlen区别

    strlen与sizeof的区别 .sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型. 该类型保证能容纳实现所建立的最大对象的字节大小. .size ...

  6. TCPL 札记

    1.函数原型符合设计要求,函数定义符合认知规律,做到见名知义,最少词汇量包含最大的信息量. 2.合理运用空行提高代码的可读性.从框架上来说有: 变量定义 初始化变量 处理 输出 返回值 3.采用伪码的 ...

  7. C语言经典例题100

    C语言经典例题100 来源 http://www.fishc.com 适合初学者 ----------------------------------------------------------- ...

  8. 黑马程序员——经典C语言程序设计100例

    1.数字排列 2.奖金分配问题 3.已知条件求解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘 10.打印楼梯 ...

  9. C语言经典程序190例

    [程序1] 题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数.求??代表的两位数,及809*??后的结果. 1.程序分析: 2.程序 ...

随机推荐

  1. 用Keras搭建神经网络 简单模版(六)——Autoencoder 自编码

    import numpy as np np.random.seed(1337) from keras.datasets import mnist from keras.models import Mo ...

  2. 使用XCode7打包动态库(Framework)

    iOS中的静态库和动态库 概念 静态库(Static Library)以 .a 为后缀,它是你的源码的实现.m文件编译而成的二进制文件集合,需要配合上暴漏的.h文件使用,它在引用链接时拷贝至可执行文件 ...

  3. CockroachDB学习笔记——[译]为什么Go语言是CockroachDB的正确选择

    原文链接:https://www.cockroachlabs.com/blog/why-go-was-the-right-choice-for-cockroachdb/ 原作者:Jessica Edw ...

  4. lexicalized Parsing

    $q$(S $\rightarrow$ NP VP) * $q$(NP $\rightarrow$ NNP) * $q$(VP $\rightarrow$ VB NP) * $q$(NP $\righ ...

  5. iOS——plist的创建,数据写入与读取

    iOS中plist的创建,数据写入与读取 Documents:应用将数据存储在Documents中,但基于NSuserDefaults的首选项设置除外Library:基于NSUserDefaults的 ...

  6. sed工具的基本用法

    sed文本处理工具的用法: 用法1:前置命令 | sed [选项] '条件指令' 用法2:sed [选项] '条件指令' 文件.. .. 认识sed工具的基本选项 sed命令的常用选项如下: -n(屏 ...

  7. appium(api操作)

    driver.current_activity #获取当前activity driver.current_package #获取包名 driver.lock(seconds=2) #息屏 #收起虚拟键 ...

  8. spring效验

    相关依赖 如果开发普通 Java 程序的的话,你需要可能需要像下面这样依赖: <dependency> <groupId>org.hibernate.validator< ...

  9. Mysql性能优化之---(二)

    建立适当的索引 说起提高数据库性能,索引是最物美价廉的东西了.不用加内存,不用改程序,不用调sql,只要执行个正确的'create index',查询速度就可能提高百倍千倍,这可真有诱惑力.可是天下没 ...

  10. ROS的初步学习--创建一个工作空间和一个程序包

    快速开始 创建工作区(workspace) 工作区可以作为一个独立的项目进行编译,存放ROS程序的源文件.编译文件和执行文件.建立工作区的方法如下: mkdir -p ~/catkin_ws/src ...