⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stringfile.c

📁 用你的语音Modem实现像电话一样通话的程序
💻 C
字号:
#include "stringfile.h"#include <stdlib.h>#include <stdio.h>#include <string.h>StringFile::StringFile(long length){	pointer = 0;	if(length == 0)	{		this->length = 100000;	}	else	{		this->length = length;	}	string = new char[this->length + 1];	available = this->length;}StringFile::StringFile(char *filename){	FILE *in;	if(in = fopen(filename, "rb"))	{		fseek(in, 0, SEEK_END);		length = ftell(in);		available = length;		fseek(in, 0, SEEK_SET);		string = new char[length + 5];		fread(string, length, 1, in);		for(int i = 0; i < 5; i++) string[length + i] = 0;		fclose(in);	}	else	{		//printf("File not found: %s\n", filename);		length = 0;		available = 1;		string = new char[1];		string[0] = 0;	}		pointer = 0;}StringFile::~StringFile(){	delete string;}StringFile::write_to_file(char *filename){	FILE *out;	if(out = fopen(filename, "wb"))	{		fwrite(string, pointer, 1, out);	}	else	{		printf("Couldn't open %s for writing.\n", filename);		return 1;	}	fclose(out);	return 0;}StringFile::read_from_string(char *string){	static int i;		delete this->string;	length = strlen(string);	available = length;	this->string = new char[length + 5];	strcpy(this->string, string);	for(i = 0; i < 5; i++) this->string[length + i] = 0;}long StringFile::get_length(){	return strlen(string);}long StringFile::get_pointer(){	return pointer;}StringFile::readline(char *arg2){		readline(string1, arg2);}StringFile::readline(){		readline(string1, string1);}StringFile::readline(float *arg2){	readline(string1, arg2);}StringFile::readline(int *arg2){	readline(string1, arg2);}StringFile::readline(long *arg2){	readline(string1, arg2);}StringFile::readline(Freq *arg2){	readline(string1, &(arg2->freq));}StringFile::readline(char *arg1, char *arg2){	static int i, len, max;	len = 0; max = 1024;		while(string[pointer] == ' ') pointer++; // skip indent	arg1[0] = 0;    arg2[0] = 0;		for(i = 0; string[pointer] != ' ' && string[pointer] != '\n' && len < max; i++, pointer++)	{     // get title		arg1[i] = string[pointer];		len++;	}	arg1[i] = 0;	if(string[pointer] != '\n')	{       // get value		pointer++;      // skip space		for(i = 0; string[pointer] != '\n' && len < max; i++, pointer++)		{			arg2[i] = string[pointer];			len++;		}		arg2[i] = 0;	}	pointer++;      // skip eoln}StringFile::backupline(){	while(string[pointer] != 10 && pointer > 0)	{		pointer--;     // first eoln	}	if(string[pointer] == 10) pointer--;        // skip eoln		while(string[pointer] != 10 && pointer > 0)	{		pointer--;     // second eoln	}		if(string[pointer] == 10) pointer++;      // skip eoln}StringFile::readline(char *arg1, long *arg2){	readline(arg1, string1);	*arg2 = atol(string1);}StringFile::readline(char *arg1, int *arg2){	static long arg;	readline(arg1, &arg);	*arg2 = (int)arg;}StringFile::readline(char *arg1, float *arg2){	readline(arg1, string1);	*arg2 = atof(string1);}StringFile::writeline(char *arg1, int indent){	static int i;	// reallocate the string	if(pointer + strlen(arg1) > available)	{		char *newstring = new char[available * 2];		strcpy(newstring, string);		delete string;		available *= 2;		length *= 2;		string = newstring;	}		for(i = 0; i < indent; i++, pointer++) string[pointer] = ' ';	sprintf(&string[pointer], arg1);	pointer += strlen(arg1);}StringFile::writeline(char *arg1, char *arg2, int indent){	static int i;		sprintf(string1, "%s %s\n", arg1, arg2);	writeline(string1, indent);}StringFile::writeline(char *arg1, long arg2, int indent){	sprintf(string1, "%s %ld\n", arg1, arg2);	writeline(string1, indent);}StringFile::writeline(char *arg1, int arg2, int indent){	sprintf(string1, "%s %d\n", arg1, arg2);	writeline(string1, indent);}StringFile::writeline(char *arg1, float arg2, int indent){	sprintf(string1, "%s %f\n", arg1, arg2);	writeline(string1, indent);}StringFile::writeline(char *arg1, Freq arg2, int indent){		sprintf(string1, "%s %d\n", arg1, arg2.freq);	writeline(string1, indent);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -