C语言中如何编写一个字符串复制函数,并在主函数中调用它。
会不会是系统测试的数据太长了?
改成s1[161],s2[81]试试?
这样就可以了,我已经在vc6通过调试运行了,不过要注意一点哦,虽然c语言里面没有string类型的变量,但是在c++里面有,所以为了防止不必要的麻烦,你这里的变量名字最好不要用string
#include
void stringcat(char str1[],char str2[],char str[])
{
int i,j;
for(i=0;str1[i]!='\0';i++)
str[i]=str1[i];
for(j=0;str2[j]!='\0';j++)
str[i+j]=str2[j];
str[i+j]='\0';
}
void main()
{
char s1[]="this is a test",s2[]=", test is a good thing.",s3[40];
stringcat(s1,s2,s3);
puts(s3);
}
#include<stdio.h>
char *custom_cpy(char *to,char *from);
int main(int argc,char *argv[]){
char *from = "i like c langanger";
char to[30];
char *ptr = custom_cpy(to,from);
printf("%s,%s
",ptr,to);
return 0;
}
char *custom_cpy(char *to,char *from){
if(to == NULL || from == NULL){
return NULL;
}
char *p = to;
for(;*from!='\0';from++,to++){
*to = *from;
}
*to = '\0';//拷贝完毕之后一定要加一个结束符号
return p;
}
扩展资料:
字符串相关函数应用:
1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn。
例:concat(‘11’,'aa’)='11aa’;
2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。
例:copy(‘abdag’,2,3)=’bda’;
3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。
例:s:=’abcde’;delete(s,2,3);结果s:=’ae’;
4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置
例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’;
5. 求字符串长度 length(s) 例:length(‘12abc’)=5;
参考资料:
百度百科-字符串
可以利用字符指针结合while循环的方式来编写字符串复制函数。
具体实现方法可以参考如下程序:
#include<stdio.h>
void str_copy(char *str1, char *str2) // 字符串复制函数
{
while(*str1++ = *str2++); // 将字符串str2中的每个字符逐个复制到str1中,直到遇到字符串结束字符'\0'
}
void main()
{
char s1[] = "abcd";
char s2[5];
str_copy(s2, s1); // 将字符串s1复制到s2中
printf("%s", s2); // 输出字符串s2,输出结果为abcd
}
/*字符串复制的函数和调用*/
#include "stdio.h"
char string(char a[],char b[]) //定义复制的字符串
{
int i; //计数
for(i=0;a[i-1]!='\0';i++) //复制
{
b[i] = a[i];
}
}
int main (void)
{
char a[]="12345asfd"; //字符串
char b[100];
string(a,b); //把a的字符串复制到b
printf("%s\n",b);//打印字符串
}
#include "stdio.h"
#include "stdlib.h"
int stringcopy(char *str1,char *str2);
main()
{
char str1[40],str2[20];
printf("输入第一个字符串");
scanf("%s",str1);
printf("输入第二个字符串");
scanf("%s",str2);
stringcopy(str1,str2);
getchar(); getchar();
return 0;
}
int stringcopy(char *str1,char *str2)
{
int i=0,j=0;
do
{
i++;
}while(*(str1+i)!='\0');
do
{
*(str1+i)=*(str2+j);
i++;j++;
}while(*(str2+j-1)!='\0'&&i<40);
if(i>=40)
printf("对不起,空间不够,不能复制!");
else
{
printf("%s\n",str1);
}
return 0;
}
void strcpy(char *des, const char *sour){ des = (char*)malloc(strlen(sour)+1); while(*sour != '\0') { *des = *sour; des++; sour++; } *des = '\0';}}
用C语言编写一个程序:从键盘输入n(0<N<100)个整数,计算并输出其中出现...
i] = 0;rd.number[i] = 0;} \/\/ 输入整数的个数N printf("Enter N (0<N<100): ");scanf("%d", &N);\/\/ 采用数组记录输入的整数 printf("Enter %d number : ", N);for (i = 0; i < N; i++){ scanf("%d", &arr[i]);} ct = 0;i = 0;while (i < N){ ...
编写一个函数实现两个字符串的连接(不使用库函数strcat).这个用C语...
void fun (char s1[],char s2[]){ int i,j;for (i=0;s1[i] !=’\\0’; i++); \/*求出的i为pA字符的总长度,包括结束标记位*\/ for (j=0;s2[j] !=’\\0’; j++)s1[i++]=s2[j]; \/*将pB字符串连在pA字符串的后面*\/ s1[i]='\\0’; \/*在字符串最后加上结束标记符*...
c语言中判断一个输入的数为偶数还是奇数的程序怎么编写
1、开启一个虚拟机,打开终端(ctrl+alt+t),然后用vi新建并进入编辑一个c文件(vi a.c)。2、按“i”进入输入模式,开始编写程序,因为linux下输入中文还要进行其他设置,所以是在notepad++下编辑的。3、先定义一个整数a。4、判断a是否能被2整除,即a对2取余是否为0,为0则此数为偶数,反之为...
编写一个C语言程序,输入两个数的乘积和和,输出这两个数。
思路:使用for循环,用减法得到两个数之后,验证乘法是否符合要求,符合则输出,不符合则跳过该循环。程序源码及运行结果如下所示(程序排版系统会自动去掉句首空格,结构混乱请见谅):include<stdio.h> int main(){ int sum,product;printf("请输入两数之和:");scanf("%d",&sum);printf("请输入...
用C语言和数据结构编写一个简单的程序(求源代码)
case 1:strcpy(tmpStr,preStr);strcat(tmpStr,strNum);printf("%s\\r\\n",tmpStr);break;default:tmpStr[0] = 0;for (i=0;i<k;i++){ strcpy(newPreStr,preStr);j = strlen(newPreStr);newPreStr[j] = strNum[i];newPreStr[j+1] = 0;iCnt = 0;for (j=0;j<k;j++){ if(...
编写C语言 编写一个体重测量,要求当输入10个人的身高和体重后计算出体重...
include<stdio.h> define N 10 int main(){ float h[N],w[N],e,t;int i;for(i=0; i<N; i++){ printf("输入第%d个人的身高(cm)和体重(kg):",i+1);scanf("%f%f",&h[i],&w[i]);} for(i=0; i<N; i++){ t=h[i]\/100;e=w[i]\/(t*t);if(e<18) printf("...
编写一个简单C语言程序
include<stdio.h>#include<math.h>int main(){ int n, sum=0; for(n=1;sum<9000;n++) { sum += pow(2,n); } printf("%d",sum); return 0;}
c语言编写程序;输入一个摄氏温度,要求输出华氏温度。公式为f=9\/5*c+...
程序如下:include <stdio.h> int main(){ int f;float c;printf("请输入一个华氏温度\\n");scanf_s("%d", &f);c = (float)(f - 32) * 5 \/ 9;printf("它的摄氏温度为:%.2f", c);} 如图:调试通过:
编写C语言程序,把一个数组按从小到大的次序排列起来
scanf("%d", &number[i]);\/\/输入10个整形数字到数组中 New_number[i] = number[i];\/\/数组number元素赋给数组New_number } for (n = 0; n <= 8; n++)\/\/要进行(10-1)组比较 for (j = 0; j <= 8 - n; j++)\/\/每组进行(10减第几组)次比较 { if (number[j] > number[...
如何使用Java对象语言编写一个加减乘除计算器要有代码
p1.add(tf);f.add(p3,BorderLayout.EAST);String[] b={"1","2","3","+","4","5","6","-","7","8","9","*","0",".","复位","\/"};for(int i=0;i<16;i++){ bt[i]=new Button(b[i]);p2.add(bt[i]);} bt[0].setForeground(Color.blue);bt[1].set...
鱼钧舜止: #include<stdio.h> char *custom_cpy(char *to,char *from); int main(int argc,char *argv[]){ char *from = "i like c langanger"; char to[30]; char *ptr = custom_cpy(to,from); printf("%s,%s\n",ptr,to); return 0; } char *custom_cpy(char *to,char *from){ if(to ...
兴宾区15578653714: 请用C写一个字符串复制函数 - ?
鱼钧舜止: #include "stdio.h" char * c_nstrcpy(char *str1, char *str2, int n) { char* temp1; char* temp2; if (str1 == NULL || str2 == NULL) { return str2; } if (strlen(str1){ return str2; } temp1 = str1 + n; temp2 = str2; while (*temp1 !='\0') { *temp2++ = *temp1++; } *...
兴宾区15578653714: C语言:编写一个函数,实现把一字符串复制到一个字符数组中. - ?
鱼钧舜止: 展开全部# include void strcopy( char str1[], char str2[]) { int i; for(i=0;str[i]!= '\0';i++){ str1[i]=str2[i]; s1[i]='\0'; } } void main() {char str1[20];str2[20]; scanf("%s%s",str1,str2);printf("%s",strcopy(str1,str2)); }
兴宾区15578653714: C语言,使用函数实现字符串复制 - ?
鱼钧舜止: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20#include <stdio.h> #include <time.h>/*把从src地址开始的字符串复制到以dest开始的字符串中*/ char* strcopy (char* dest, char *src) {char* r = dest;while((*r++ = *src++)!='\0');return dest; }int ...
兴宾区15578653714: C语言中,如何编写一个字符串复制函数,并在主函数中调用它.?
鱼钧舜止: #include <stdio.h> int my_strcpy(char* a,char* b) { int i = 0; if(a&&b) while( *a++ = *b++ ) i++; return i; } int main(void) { char* a = "123456"; char* b = "abcdef"; my_strcpy(a,b); printf(a); return 0; }
兴宾区15578653714: 用c语言写一个字符串拷贝函数 - ?
鱼钧舜止: *q='\0'; return *q; 所以函数返回的是'\0'.然后主函数里面你的printf打印输出的是函数的返回值而不是num这个数组,你把%s后面的参数改成num就行了.
兴宾区15578653714: C语言题目 用函数调用方式,实现字符串的复制. 要求如下 - ?
鱼钧舜止: #include void string_copy(char *str_to,const char *str_from) {while(*str_to++=*str_from++); } int main() {char array_str1[80],array_str2[80];gets(array_str1);string_copy(array_str2,array_str1);puts(array_str2);return 0; }
兴宾区15578653714: C语言中字符串的复制 - ?
鱼钧舜止: 要先加入头文件#include 里面的有个函数可以直接复制字符串 例如:strcpy(str2,str1) ; 把str1中的字符复制到str2中.
兴宾区15578653714: C语言编写一个函数,使输入的一个字符串复制到一个字符数组中,并在主函数中输入和输出字符串 - ?
鱼钧舜止: #include<stdio.h> #include<conio.h> char fun(char *a) { int i = 0, j = 0; char b[80]; while (a[i] != '\0' && a[i] == '*') { i++; } while (a[i] != '\0') { b[j] = a[i]; i++; j++; } i = 0; j = 0; while (b[j] != '\0') { a[i] = b[j]; i++; j++; } a[i] = '\0'; return a; } int main() { char a[80]; ...
兴宾区15578653714: C语言编程找一个字符串复制函数 - ?
鱼钧舜止: 并没有这样的函数吧.你先用一个循环把前面你要复制到s1里面的保存在一个字符串里面,然后把后面的复制到另外一个字符串里面.然后用strcpy函数将进行字符串的拷贝.思路是这样的 希望对你有用