① 在c语言中 字符串复制函数 strcpy怎样使用
你的这一段代码有语法错误:
if(a[j]<a[min])min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
你的意思是如果a[j]<a[min]成立的话,则执行一下所有语句。但是这样写的话只能执行第一条语句:min=j;剩下的无法执行。因为if语句执行到第一个分号就会结束了。所以简单的改一下:
if(a[j]<a[min])
{
min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
这样就可以了。不过即使这样改了后你的代码仍然不能实现需要的功能。我给你分析下:
就是这段代码:
for (i=0;i<9;i++)
{
k=i+1;
min=i;
for(j=k;j<10;j++)
if(a[j]<a[min])
{
min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
你的本意是想用冒泡排序法对其进行排序。不过仔细看一下可以发现,你的冒泡法用的有错误!假设只对4个数排序:4,2,1,3;
i=0时,k=1,min=0,j=1时,因为a[1]<a[0],所以a[j]<a[min],满足if的条件。所以min=1,并对两数进行互换。结果为:a[0]=2,a[1]=4。j=2时,因为a[2]<a[1],所以a[j]<a[min]。满足if的条件。所以min=2,并对两数进行互换。结果为:a[1]=1,a[2]=4。j=3时,因为a[3]<a[2],所以a[j]<a[min],满足if的条件。所以min=3,并对两数进行互换。结果为:a[2]=3,a[3]=4。此时,a[0]=2,a[1]=1,a[2]=3,a[3]=4。
i=1时,k=2,min=1,j=2时,因为a[2]>a[1],所以a[j]>a[min],不满足if条件。j=3时,因为a[3]>a[1],所以a[j]>a[min],不满足if条件。此时:a[0]=2,a[1]=1,a[2]=3,a[3]=4。
i=2时,k=3,min=2,j=3时,因为a[3]>a[2],所以a[j]>a[min],不满足if条件。此时:a[0]=2,a[1]=1,a[2]=3,a[3]=4。
有此可见,这段代码并不能实现对这四个数从小到大的排序。其实冒泡排序很简单的,我建议你看一下它的源代码。我给你简化一下:
#include <stdio.h>
void main()
{
int a[10],i,j,k,temp,min;
printf ("Enter 10 numbers:15 -24 10 43 -12 52 -61 33 -23 8 \n");
for (i=0;i<10;i++)
scanf ("%d",&a[i]);
for (i=0;i<9;i++)//选择排序法
{
for(j=i+1;j<10;j++)
if(a[j]<a[i])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
/*for(i=1;i<10;i++)//冒泡排序法
for(j=0;j<10-i;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}*/
printf("the sored numbers:\n");
for (i=0;i<10;i++)
printf ("%d,",a[i]);
}
你可以选择冒泡排序和选择排序,两个方法都差不多。
对于strcpy()这个字符串函数用起来简单。写段简单的代码:
#include <stdio.h>
#include<string.h>
main()
{
char str1[100],str2[100];
printf("input a string:");
gets(str1);
strcpy(str2,str1);
puts(str2);
}
记得加上头文件#include<string.h>就可以了。
希望可以帮到你啊,呵呵
② strcpy函数的作用是什么
这是一个字符串复制的函数。将第二个符串复制给第一个。
str1和str2=[10]中,没有定义正确,定义好的话a就是对的,这可能是打印错误。改一下,答案可能是b。b中str3是一个地址,是一个常量,而str1是字符串。不能给常量赋值,是一个程序错误。
(2)c语言如何调用strcpy函数扩展阅读
1、strcpy函数是复制字符串的,接受两个参数,一个是被复制字符串,另一个新字符串。具体的用法,首先打开编辑器新建一个c语言的程序文件,写入头文件和主函数:
③ C语言关于strcpy函数的使用
name[0]是一个指针,指向"abc"这个字符串常量。在C语言中,字符串常量被存储在代码段中,只可读不可修改。strcpy函数要拷贝"ABC"到name[0]指向的内存区域(即代码段的字符串常量区),那个区域不可写,所以出现错误。
如果想修改,那么不要用字符串常量而是用字符串变量。下面是修改后的代码
#include<stdio.h>
#include<string.h>
intmain()
{
charname[2][4]={"abc","efg"};
strcpy(name[0],"ABC");
printf("%s ",name[0]);
return0;
}
这样name是一个二维数组,abc和efg都存在数组里,可以修改。
④ c语言strcpy()用法
1、strcpy函数是复制字符串的,接受两个参数,一个是被复制字符串,另一个新字符串。具体的用法,首先打开编辑器新建一个c语言的程序文件,写入头文件和主函数:
⑤ strcpy函数如何使用
1、strcpy 函数使用方法:
strcpy()函数是C语言中的一个复制字符串的库函数。
2、空指针检查:源指针和目的指针都有可能会出现空指针的情况,所以应该对其进行检查。
3、const 修饰:源字符串参数用const修饰,防止修改源字符串;
4、为什么要设置ret 指针以及返回ret指针的位置[3],由于目的指针dst已经在进行移动了,所以用辅助指针ret表明首指针;
(5)c语言如何调用strcpy函数扩展阅读:
strcpy 函数的错误用法及反馈:
1、不检查指针的有效性,说明答题者不注重代码的健壮性。
2、(A)return new string("Invalid argument(s)");,说明答题者根本不知道返回值的用途,并且他对内存泄漏也没有警惕心。从函数中返回函数体内分配的内存是十分危险的做法,他把释放内存的义务抛给不知情的调用者,绝大多数情况下,调用者不会释放内存,这导致内存泄漏。
3、(B)return 0;,说明答题者没有掌握异常机制。调用者有可能忘记检查返回值,调用者还可能无法检查返回值(见后面的链式表达式)。妄想让返回值肩负返回正确值和异常值的双重功能,其结果往往是两种功能都失效。应该以抛出异常来代替返回值,这样可以减轻调用者的负担、使错误不会被忽略、增强程序的可维护性。
4、(A)忘记保存原始的strDest值,说明答题者逻辑思维不严密。
⑥ C语言中strcpy的用法! 要举例哦!简单的哦!
下面是 strcpy() 函数的声明:
char *strcpy(char *dest, const char *src)
参数:
1.dest-- 指向用于存储复制内容的目标数组。
2.src-- 要复制的字符串。
实例:
#include <stdio.h>
#include <string.h>
int main (){
char str1[]="Sample string";
char str2[40]; char str3[40];
strcpy (str2,str1);
strcpy (str3," successful");
printf ("str1: %s str2: %s str3: %s ",str1,str2,str3);
return 0;}
(6)c语言如何调用strcpy函数扩展阅读:
需要说明的是:
1、一个C语言源程序可以由一个或多个源文件组成。
2、每个源文件可由一个或多个函数组成。
3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。
4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。
5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。
6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
网络-c语言
⑦ C语言编程实现strcpy函数
char*my_strcpy(char*desc,constchar*src)
{
char*tmp=desc;
if(src==NULL||desc==NULL)
returnNULL;
inti=0;
while(*(desc+i)=*(src+i))
i++;
returntmp;
}
⑧ C语言中strcpy函数怎么用看题
strcpy
将第二个拷贝到第一个
即拷完以后a为a2\0
注意每个字符串最后都有个\0
然后
strcat
后a就是"a2yz"
最终输出结果为"a2yz"