C语言读入一串字符行
C语言中,使用fgets函数遍可以一行行读取文件。
1、fgets函数: 原型:char * fgets(char * buf, int bufsize, FILE * stream); 功能:从文件结构体指针stream中读取数据,每次读取一行。 说明:读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋值为)。如果该行不足bufsize个字符,则读完该行就结束,如果该行超过bufsize-1个字符,则fgets只返回一个不完整的行,buf缓冲区以字符结束,下一次fgets调用会继续读取该行剩余的字符; 头文件:stdio.h; 返回值:若读入成功,返回与参数buf相同的字符指针,若读入过程中遇到EOF或发生错误,返回NULL指针。所以当遇到返回值为NULL的情况时,应使用ferror或feof函数检查是发生错误还是遇到EOF。
2、例程: #include
gets函数一次只可读取一个字符
C语言中getchar()是带缓存输入函数,且执行一次getchar()函数,只能读到一个字符。但,用户却可以一次输入n多个字符,这些字符会先存储到输入缓存中,在用户输入回车后,getchar()才去缓存中读取数据。
如果此时(回车后),只是进行一次getchar()读入,则只能得到第一个输入字符,如果没有后续的读入操作,则滞留在缓存中的数据会在程序结束时被丢弃。
如果代码中,是循环进行getchar()读入,则会依次读到所有的字符,直到循环条件结束。如:
以下测试程序,供编程爱好者研究:
#include <windows.h>
#include <stdio.h>
void main(void)
{
char ch;
while( (ch=getchar())!='\n' ) //输入字符,直到回车结束(测试人员可在输入几个字符后,停几秒,再按回车,就可以验证”回车后才读取缓存“这句话了。)
{
printf("your input: %c, sleep 1s\n", ch );
Sleep(1000); //暂停1秒
}
}
geschar()函数一次只能输入一个字符, 而gets()可以一次得到很多字符,也就是字符串。
整个意思 声明字符型指针 *s 声明字符串c[100] 让客户输入一串字符,(字符串) 最后将 *s指向这个字符串的地址, 不知能明白不
使用java的输入输出流将一个文本文件的内容按行读取,每读一行就顺序添加行号,并写入到另一个文件中
Scanner sc=new Scanner(new File("abc.txt"));
int c=1;
FileWriter fw =new FileWriter("sf.txt");
while(sc.hasNextLine()){
String s=c+sc.nextLine();
fw.write(s+"\r\n");
fw.flush();
c++;
}
fw.close();
sc.close();