用指针实现字符串的连接

如题所述

第1个回答  2022-11-16

#include<stdio.h>

int main(){

char a[20]={0},b[20]={0};

char*q=a,*p=b;

printf("请输入第一串数字\n");

gets(a);

printf("请输入第二串数字\n");

gets(b);

printf("第一串数字为\n");

puts(a);

printf("第二串数字为\n");

puts(b);

while(*q!='\0'){

q++;

}

while(*p!='\0'){

*q=*p;

q++,p++;

}

printf("连接后的字符为:\n");

puts(a);

return 0;

}

扩展资料:

gets()用法:

示例

C:

#include<stdio.h>//这个头文件包含gets()函数,这个函数在ISO/IEC 9899 2011(C11)标准中被移除

int main(void)

{

char str1[5];//不要char*p,然后gets(p),这是错误的,因为p没有指向有效的内存,它可能指向任何非法地址//地方的未知大小的内存块,这样以来,就可能修改了不属于本程序的内存的内容

gets(str1);

printf("%s\n",str1);

return 0;

}

#include<stdio.h>//gets_s()用法

#define CH 20

int main(void)

{

char ch[CH];

printf("请输入你的名字:\n");

gets_s(ch,CH);//这里不能用gets_s(ch);

printf("这是你的名字:%s\n",ch);

return 0;

}

C++:

#include<iostream>

#include<cstdio>

using namespace std;

int main()

{

char str[100];

gets(str);

cout<<str<<endl;

return 0;

}

gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。其调用格式为:

gets(s);

其中s为字符串变量(字符串数组名或字符串指针)。

gets(s)函数与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s)函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。

也就是说:gets()函数读取到\n(我们输入的回车)于是停止读取,但是它不会把\n包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行。

说明编辑

gets(s)函数中的变量s为一字符串指针。如果为单个字符指针,编译连接不会有错误,但运行后内存溢出错误。

宽字符版本,当使用unicode宽字符文本时,使用这个函数_getws();

在C11标准中被删除,可用C标准库中的fgets代替.

相似回答