① 在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"