首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++中字符串的帮助

C++中字符串的帮助
EN

Stack Overflow用户
提问于 2011-05-03 09:50:43
回答 4查看 106关注 0票数 0

我在复习准备考试,我需要一些字符串方面的帮助

假设下面的声明,并进一步假设string.h为uncluded

代码语言:javascript
复制
char rocky[21], bw[21], boris[21];
int result;

a.)编写一条scanf语句,该语句可以将字符串Beauregard读入rocky

我的answer= scanf("%s", &rocky);

b.)假设标准输入行上的唯一内容是文本Beauregard,使用scanf的替代方法编写一条语句来读取文本并将其存储在rocky中

my answer= gets (Beauregard); strcpy(rocky);

c.)假设读入的文本是Beauregard,那么在执行下面的语句后,result的值是多少?

代码语言:javascript
复制
result=strlen(rocky); 

我的answer=我不知道..

d.)下面的语句做了什么?

代码语言:javascript
复制
strcpy(boris, rocky);

answer=复制了字符串..(不知道更多)

e.)下面的语句做了什么?rocky和bw的价值是什么?

代码语言:javascript
复制
strncpy(bw,rocky,3);

我的answer=没有线索

非常感谢您的帮助,解释一下也会有所帮助:)

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-03 10:02:03

a.在C中,数组和指针密切相关。具体地说,数组的名称衰减为指向数组第一个元素的指针,因此您的答案应该是

代码语言:javascript
复制
scanf("%s", rocky); /* note the lack of an & in front of rocky */

b. gets(Beauregard)没有真正的意义。gets函数从标准输入(比如“键盘”)中读取一个字符串,并将其存储在传递给它的参数所指向的字符数组中。因此,您应该假设用户将输入"Beauregard",并且您应该使用以下命令将其读入rocky数组

代码语言:javascript
复制
gets(rocky);

strlen返回字符串的长度,不包括尾随的\0字符,因此在本例中为10。

D.strcpy只是将rocky数组的内容复制到boris数组中,所以它们都应该包含“strcpy”。

E.strncpy与strcpy类似,但只复制最多n个字符(其中n是最后一个参数,因此在本例中,bw将包含"Bea“,没有终止空字符。

请注意,在任何实际的程序中,其中几个语句都是非常糟糕的想法。例如,从不使用gets的理由,因为任何gets的使用都会暴露出安全缺陷。你应该总是使用fgets 。如果您指定了宽度,就可以安全地使用scanf函数,但是您在这里还没有这样做。我提到了这些东西,以防你的老师已经讲过了,而你却忘记了。

票数 1
EN

Stack Overflow用户

发布于 2011-05-03 09:56:46

strlen返回C字符串的长度。strlen("Beauregard");将返回10,因为字符串长度为10个字符。

strcpy只是复制一个字符串,你是对的。

strncpy允许您指定所需的最大字符数。因此,如果您传递3,您将得到3个字符和字符串末尾的空终止符。

票数 1
EN

Stack Overflow用户

发布于 2011-05-03 10:00:39

strlen( rocky )将返回rocky所指向的字符串长度。组成“Beauregard”的字母数。

strncpy( bw,rocky,3)将rocky指向的字符串中的前3个字母复制到bw中。

您应该阅读strlen、strcpy和strncpy的手册页。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5864278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档