C语言中从文件向外读取出结构体所用函数及相应用法,跪求大神

C语言中从文件向外读取出结构体所用函数及相应用法,跪求大神,第1张

C语言函数返回类型的默认定义类型是void。( 错 )for语句作为循环控制语句时,其括号内各个表达式及其后的分号都可缺省。(对 )在 if语句中,不可以没有 else 子句。 ( 错 )程序是按书写的顺序执行的。( 错)文件的读函数是从输入文件中读取信息,并存放在内存中。( 对 )在 C 语言中,只有在两个字符串所包含的字符个数相同时,才能比较大小。如字符串“That”与“The”就不能进行大小比较。( 错 )在 C 语言程序中,happy是正确的标识符。( 对)在 C 程序中一行内可以写几个语句,一个语句可以分写在多行上。因此,并不是每一条 C 语句都必须有一个分号的。( 错 )C 语言中 , 字符串常量存放在字符数组中要有一个结束符 , 该结束符是0 。( 对 )C提供的预处理功能主要有宏定义、文件包含和条件编译三种。( 对 )数组在定义时没有必要指定数组的长度,其长度可以在程序中根据元素个数再决定。( 对 )字符串是C 语言中一种基本数据类型,字符串总是以‘\n’作为结束标志。( 错 )C 语言规定: 在一个源程序中, main函数的位置必须在最开始。( 错 )标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。( 对 )continue 只能用于循环体中。( 错 )C 语言程序实现与其他高级语言一样也要经过编辑、编译连接和运行这样的三步曲。( 对 )预处理命令的前面必须加一个“#”号。(对 ) C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。(对 )在多层循环中, 一个break语句只向外跳一层。( 对 )在对数组全部元素赋初值时,不可以省略行数,但能省略列数。( 错 )

L是指向某个结构变量的指针,而length是结构体的成员。

意思为L为获取该结构体变量,length则为获取该变量length成员的值。

不能使用函数strlea。编写函数convert(chars),其功能是将字符串s倒置。编写主函数,输入字符串石头人,先调用lenghth函数输出串场,在调用convert函数,将字符串str倒置后输出。

扩展资料:

顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用选择结构。选择结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。

选择结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的选择语句。选择结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图。

然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。

C程序中函数的数目实际上是不限的,如果说有什么限制的话,那就是,一个C程序中必须至少有一个函数,而且其中必须有一个并且仅有一个以main为名,这个函数称为主函数,整个程序从这个主函数开始执行。

参考资料来源:百度百科-C语言

可以参考我写的代码

#include<iostream>

using namespace std;

class String

{

private:

size_t length;

char sPtr;

public:

String(char c):length(strlen(c))

{

sPtr = new char[length+1];

strcpy(sPtr,c);

}

String(const String &copy):length(copylength)

{

sPtr = new char[length+1];

strcpy(sPtr,copysPtr);

}

~String()

{

delete []sPtr;

}

void print()

{

cout<<sPtr<<endl;

}

size_t getLength()

{

return length;

}

friend ostream &operator<<(ostream &, const String &);

//要求实现的函数

String& insert(size_t pos1,const String& str);

String& insert(size_t pos1,const char s,size_t n);

String& erase(size_t pos = 0, size_t n = -1);

String& replace(size_t pos1, size_t n1, const String& str);

String& replace(size_t pos1, size_t n1, const char s, size_t n2);

void swap(String& str);

String& operator+=(const String& str);

String& operator+=(const char s);

size_t find(const String& str, size_t pos = 0) const;

size_t find(const char s, size_t pos, size_t n) const;

};

String& String::insert(size_t pos1, const String &str)

{

String tmp(this->sPtr);

delete []sPtr;

length += strlength + 1;

sPtr = new char[length]; //删除原空间,开辟新空间

size_t pos = 0;

while(pos < pos1) //插入原有字符串pos1之前的那段

{

sPtr[pos] = tmpsPtr[pos];

pos++;

}

size_t index = 0;

while(index < strlength) //插入新的字符串

{

sPtr[index+pos] = strsPtr[index];

index++;

}

while(pos < tmplength) //插入原有字符串pos1之后的那段

{

sPtr[pos+index] = tmpsPtr[pos];

pos++;

}

sPtr[pos+index] = '\0'; //字符串最后存储结束符,重要!!!

return this;

}

String& String::insert(size_t pos1,const char s,size_t n)

{

String tmp(this->sPtr);

delete []sPtr;

length += n + 1;

sPtr = new char[length];

size_t pos = 0;

while(pos < pos1)

{

sPtr[pos] = tmpsPtr[pos];

pos++;

}

size_t index = 0;

while(index < n)

{

sPtr[index+pos] = s[index];

index++;

}

while(pos < tmplength)

{

sPtr[pos+index] = tmpsPtr[pos];

pos++;

}

sPtr[pos+index] = '\0';

return this;

}

String& String::erase(size_t pos, size_t n)//注意,声明时有默认值,定义时不需再写默认值

{

if(n == -1)

{

n = length;

}

size_t index = pos;

size_t end = pos + n;

while(end < length)

{

sPtr[index] = sPtr[end];

index++;

end++;

}

sPtr[index] = '\0'; //字符串最后存储结束符,重要!!!

return this;

}

String& String::replace(size_t pos1, size_t n1, const String& str)

{

this->erase(pos1,n1);

this->insert(pos1,str);

return this;

}

String& String::replace(size_t pos1, size_t n1, const char s, size_t n2)

{

this->erase(pos1,n1);

this->insert(pos1,s,n2);

return this;

}

void String::swap(String& str)

{

char tmp = sPtr;

size_t l = length;

sPtr = strsPtr;

length = strlength;

strsPtr = tmp;

strlength = l;

}

String& String::operator+=(const String& str)

{

char tmp = sPtr;

length += strlength;

sPtr = new char[length+1];

strcpy(sPtr,tmp);

strcat(sPtr,strsPtr);

delete tmp;

return this;

}

String& String::operator+=(const char s)

{

char tmp = sPtr;

length += strlen(s);

sPtr = new char[length+1];

strcpy(sPtr,tmp);

strcat(sPtr,s);

delete tmp;

return this;

}

ostream &operator<<(ostream & output, const String &str)

{

output<<strsPtr;

return output;

}

size_t String::find(const String& str, size_t pos) const

{

size_t index1 = pos;

size_t index2 = 0;

if(strlength > length - pos)

{

return -1;

}

while(index1 < length && index2 < strlength)

{

while(sPtr[index1] == strsPtr[index2])

{

index1++;

index2++;

if(index2 == strlength)

{

return index1-index2;

}

}

index1++;

index2 = 0;

}

if(index2 == strlength)

{

return index1-index2;

}

return -1;

}

size_t String::find(const char s, size_t pos, size_t n) const

{

if(n > length - pos)

{

return -1;

}

size_t index1 = pos;

size_t index2 = 0;

while(index1 < length & index2 < n)

{

while(sPtr[index1] == s[index2])

{

index1++;

index2++;

if(index2 == n)

{

break;

}

}

index1++;

index2 = 0;

}

if(index2 == n)

{

return index1-index2;

}

return -1;

}

int main()

{

String s1("Demonstrating all the advanced");

String s2("string functions!!!");

cout <<"s1:"<< s1 <<endl <<"s2:"<< s2 << endl;

// 将感叹号删除

s2erase(16, 3);

//将"all the"替换为"some"

s1replace(14, 7, "some");

//将一个空格插入到s2的最前面

s2insert(0, "haha");

cout <<"s1:"<< s1 <<endl <<"s2:"<< s2 << endl;

// 将s1中some后面的所有字符串返回

size_t index = s1find("some",0);

cout << index << endl;

s1swap(s2);

cout <<"s1:"<< s1 <<endl <<"s2:"<< s2 << endl;

s1 += s2;

cout <<"s1:"<< s1 <<endl <<"s2:"<< s2 << endl;

return 0;

}

#include <stdioh>

struct node

{

int data;

struct node next;

};

struct node lnode;

int main()

{

printf("struct node size = %d\n",sizeof(struct node));

printf("node size = %d\n",sizeof(node));

printf("lnode size = %d\n",sizeof(lnode));

return 0;

}

输出:

struct node size = 8

node size = 8

lnode size = 8

Press any key to continue

这是VC++ 60的编译结果

--------------------------------------

在gcc里面,编译失败:sizeof(node);是不允许的,必须是sizeof(struct node)。

删除这一行之后运行结果:

struct node size = 8

lnode size = 8

是一样的。

--------------------------------------

在Turbo C里面,也是编译失败,原因同上:

错误 nonamec 14: 未定义的符号'node'在 main 函数中

删除这一行之后运行结果:

struct node size = 4

lnode size = 4

也是一样的。

-----------------------------------------------------

应该是一样的才对。

楼主把你的程序和编译器版本发出来看看。

以上就是关于C语言中从文件向外读取出结构体所用函数及相应用法,跪求大神全部的内容,包括:C语言中从文件向外读取出结构体所用函数及相应用法,跪求大神、C语言中L->length是什么意思、设计一个字符串类MyString,具有构造函数、拷贝构造函数、析构函数、获取字符串长度的函数GetLen等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9327538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存