-
你说其中一个字符是一个变量,但那有多少个? 我现在给你最后一个,你看看。
例如,如果键入 A,则键入 hello A,如果键入 B,则键入 B ,依此类推,这应该对您有所帮助。
#include
#include
using namespace std;
int main()
string strtmp("hello " );
str[1];
cin>>str;
string str_str=strtmp+(string)str;
cout<< str_ endl;
return 0;
-
如果将此字符串定义为字符数组,则只能将值分配给其中一个数组成员,而其他成员的值不会更改。
-
p1 是指针,它是一个地址,+2 是地址 +2,地址是 strcat(p1+2,p2+1) 到接下来的 2 个地址:p1=“abcd”,因为 p1 指向"abcd"'a'所以 p1+2 指向'c'地址 p2=“abcd”,因为 p2 指向"abcd"'a'所以 p2+1 指向'b'所以strcat(p1+2,p2+1)是意志"cd"跟"bcd"字符串连接和 get"cdbcd"然后运行 strcpy(str+2,"cdbcd"st[50]=“xyz”,因为 str 指向"xyz"'x'所以 str+2 指向'z'所以,strcpy(str+2,"cdbcd"也就是说,将"z"跟"cdbcd"复制字符串,复制后复制原始字符串'z'对于空间的开始"cdbcd"覆盖,和前面"xy"不受影响,因此最终输出"xycdbcd"
还有一个问题。
1 程序不仅有语法错误,而且逻辑错误严重,无法运行。 strcat(p1+2,p2+1);p1 是指针的常量值,不能由引用对象修改。 2 程序只有在更改为以下内容时才能运行。
include include void main() 结果是:xycdbcd
-
strcat,已连接。
strcat(p1+2,p2+1) 是一个以 (p1+2 位) 开头并连接(p2+1 位)的字符串。
返回值为 p1+2。
这是CDBCD
strcpy(str+2,"cdbcd"这是繁殖。 复制以 str+2 开头,结果为 xycdbcd
-
p1 p2 str 记录字符串 strcat 串联字符串的第一个地址,p1 位置为 'a',+2,向后移动 2 至'c'cdp2 位置为 'A', +1,后移至 1'b'BCD剪接为CDBCD
strcpy 复制字符串。
str 位置是'x'+2 将 2 移回 'z' 并开始从 'z' 复制,cdbcd 替换 'xyz) 并且从 z 开始的所有内容都得到 xycdbcd
-
char *p1="abcd", *p2="abcd", str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));将 p2+1 连接到 P1+2 并将其复制到 str+2。
printf("%s",str);
P1+2 是 cd
P2+1 是 BCD
strcat(p1+2,p2+1) 是 cdbcdstr+2 是 z
strcpy(str+2,strcat(p1+2,p2+1)) 是 xycdbcd,其中 z 被覆盖。
-
这是将数组传递给子函数操作,实际上它只能传递数组的指针,即子函数的数组指针的内容与主函数的内容相同,在子函数中修改其内容就是改变主函数中数组的内容。
如果参数设置为 const,则子函数无权修改其内容,从而保护数据的安全。
因此,在将指针数据写入子函数时,如果不想(或不能)更改指针引用的数据,请将指针的类型声明为 const,即常量,以防止指针的内容在子函数中被无意中更改。 但是,对于简单的数据传输,由于数据被复制到参数中,因此子函数和主函数的数据根本不想做,因此没有必要将数据声明为 const。
如果第一个参数也是常量,则该函数不能对第一个参数进行操作,因此无法实现该函数的功能,即串联字符操作。
char * strcat(char *a,const char *b)
a 的长度必须大于字符串 a 和 b 的实际长度之和,否则将越过边界。 越线后不会错,只是执行起来会得到奇怪的结果。。。
这就是这个函数应该如何实现。 不需要传递 a 的长度;
void main()
结果输出为 abcefg
你的函数只能返回一个char类型的数据,你返回一个char[30],这是无法实现的,c[30]只存在于子函数中,我不需要加1,在第一个for循环之后,i已经是字符的尾巴了。
-
strcat 是将参数 2 的内容(字符串)添加到参数 1 中。
const 对应的参数可以是常量字符串,例如:"abc123".
第一个参数用于从跟踪中添加字符串,因此它必须是变量,而不是常量字符串。
char s1[80]="xyz";
strcat(s1,"abc123");S1 内容更改"xyzabc123"
-
strcat 函数的作用是将第二个参数的字符串添加到第一个参数的末尾并连接起来,这样第一个字符数组就可以更改,所以它不能是 const
const 数组是无法更改的数组...
-
您的函数正在白白消耗 CPU 时间和内存,并且没有任何效果。
所实现的并不是strcat的初衷。
strcat 是将第二个参数引用的字符串连接到第一个参数的末尾。
第一个必须写入,所以 char*,第二个是只读的,所以 const char* 数组参数退化为指针,这是没有办法解决的。
如果要传入大小,则必须添加其他参数。
即使使用传统的 0 端来确定字符串的末尾,也无法确定原始数组的大小。
所以其实strcat有很大的安全隐患,实际的c编程是strncat
此外,传递 string&、const string&,使其成为内部带宽大小。
使用字符串就是使用它的第一个地址(有时和长度,实际上,拥有第一个地址就足够了),无论字符串有多长。 最明显的例子是,当一个(常量)字符串作为参数及其第一个地址传递时。 所以你的比较只是地址的比较。
您可以尝试输出,scanf 函数是从缓冲区读取的数据,第二个字符串的数据是空格或换行符制表符。 您可以单独读取它们,但在两者之间添加 fflush(stdin); 清除缓冲区。