单个字符逐个读入的时候如何判断到达文件末尾?

昨天为学弟学妹们出省赛选拔赛题,特意找了一个搜不到题解的题。可是没想到把自己也难住了。。。

   原题链接:CSU 1177

总之就是现在还没A出来。。。核心思路应该是没问题的,就是题中提到过一句,每行输入不超过80字符,如果我使用gets来读入的话,如果存在相邻的两行都是80字符的话,gets会当作一个输入来判定。

想过一个办法想知道如果使用逐个输入字符的方法,但是苦于不知道何时读到了文件末尾。

  今天杰神终于给出了一个想法,代码如下:

  

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

char s[200];

inline int input(char *s)
{
 ``   int i;
    *s = getchar();
    for(i=1; *(s + i) != ‘\n‘ && *(s + i) != EOF; i++)
        *(s + i) = getchar();
    int j = *(s + i) != EOF ? 1 : 0;
    *(s + i) = ‘\0‘;
    return j;
}

char random()
{
    int r = rand()%3;
    char c;
    if(r == 0)
        c = rand()%10 + ‘0‘;
    else if(r == 1)
        c = rand()%26 + ‘A‘;
    else
        c = rand()%26 + ‘a‘;
    return c;
}

int main()
{

    freopen("out.txt","r",stdin);
    while(input(s));
    printf("%s\n",s);

//    srand(time(0));
//    freopen("out.txt","w",stdout);
//    int n = 20;
//    for(int i=0; i<n; i++)
//    {
//        printf("%c",random());
//    }

    return 0;
}

  

单个字符逐个读入的时候如何判断到达文件末尾?

时间: 2024-10-24 15:24:44

单个字符逐个读入的时候如何判断到达文件末尾?的相关文章

C++学习45 流成员函数put输出单个字符 cin输入流详解 get()函数读入一个字符

在程序中一般用cout和插入运算符“<<”实现输出,cout流在内存中有相应的缓冲区.有时用户还有特殊的输出要求,例如只输出一个字符.ostream类除了提供上面介绍过的用于格式控制的成员函数外,还提供了专用于输出单个字符的成员函数put.如:    cout.put('a');调用该函数的结果是在屏幕上显示一个字符a.put函数的参数可以是字符或字符的ASCII代码(也可以是一个整型表达式).如    cout.put(65 + 32);也显示字符a,因为97是字符a的ASCII代码. 可以

字符串中单个字符的用法

我们使用字符串时经常要对字符串中单个字符进行处理,比如检测一个string对象是否包含空白,或者把string对象中的字母大写改为小写,查看某个特定字符是否出现,判断字符串是否为数字等等. 这类处理的关键是要获取字符本身.有时需要处理string对象中的每一个字符,另外一些时候则只需处理某个特定的字符,还有些时候遇到某个条件处理就要停下来. 在cctype头文件中定义了一组标准库函数处理字符串的工作. cctype头文件中的函数 isalnum(c)    当c是字母或数字时为真 isalpha

DOS功能调用——单个字符及字符串的输入输出

DOS系统功能调用步骤:    1. AH <- 功能号    2.指定寄存器放入该功能所要求的入口参数    3.执行int 21H    4.分析出口参数 单字符输入输出 01h键盘输入            AL=输入字符    02h显示器输出            DL=输出字符    07h直接控制台输入(无回显)    AL=输入字符    08键盘输入(无回显)        AL=输入字符======================汇编例子===================

iOS 获取字符串中的单个字符

要取到单个字符,就要知道字符串的编码方式,这样才能够定位每个字符在内存中的位置.但是,iOS的字符串编码是不固定的,因此,需要设置一个统一的编码格式,将所有其他格式的字符串都转化为统一的格式,然后就可以根据编码规则取到单个字符了.在这里,使用UTF-8编码.UTF-8编码的使用范围比较广泛,客户端与服务器之间传输的数据大多以UTF-8编码. 关于UTF-8的详细说明可以Wiki下:UTF-8. 下图是UTF-8编码的格式: 开发的流程大概是: 将NSString字符串转成UTF-8格式的char

lucene定义自己的分词器将其分成单个字符

问题描述:将一句话拆分成单个字符,并且去掉空格. package com.mylucene; import java.io.IOException; import java.io.Reader; import org.apache.lucene.analysis.Tokenizer; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.apache.lucene.analysis.toke

C#获取单个字符的拼音声母

public class ConvertToPinYing { /// <summary> /// 汉字转拼音缩写 /// </summary> /// <param name="str">要转换的汉字字符串</param> /// <returns>拼音缩写</returns> public static string GetPYString(string str) { string tempStr = &quo

JPQL模糊匹配单个字符

JPQL模糊匹配,不是%,而是单个字符,该怎么办?比如我要查出数据库中满足后三位是数字的字符串 对于mysql来说,使用通配符 %和_可以轻松解决,但是对于JPQL来说模糊查询就伤脑筋了... 有一个方法,可以使用like查询出来以后,再在java代码里进行过滤.虽然很笨,但也有效

css和jQuery ,字符串中重新单个字符样式背景

<table class="tb2"> <tr><td class="td1">融资登记企业<span>985</span>个</td><td class="td2">融资项目数量<span>985</span>个</td><td class="td3">融资需求金额<span>985

C++【String类】String查找单个字符,查找字符串的函数实现

#include<iostream> #include<stdlib.h> #include<assert.h> using namespace std; class String { public:     String(const char* str)         :_str(new char[strlen(str) + 1])     {         _size = strlen(str);         _capacity = _size + 1;