Ⅰ c語言中strcpy函數怎麼用看題
strcpy
將第二個拷貝到第一個
即拷完以後a為a2\0
注意每個字元串最後都有個\0
然後
strcat
後a就是"a2yz"
最終輸出結果為"a2yz"
Ⅱ C語言 strcpy函數
printf("%d\n",sizeof(s),strlen(s));
這句話錯誤,少了一個%d,sizeof也不應該分開寫。
strcpy(s,t);
是將字元數組t裡面的內容賦給字元數組s,
t[0]=X,t[1]=Y,t[2]=Z,t[3]="\0",當strcpy()函數執行完之後,字元數組s中的內容變為s[0]=X,s[1]=Y,s[2]=Z,s[3]="\0",s[4]=E,s[5]=F.
sizeof(s)的值是字元數組的大小即為20。
strlen(s)的值為「\0」之前的字元長度即為3.
printf("%c,%s\n",s[4],s);
當輸出字元數組s時,編譯器當碰到第一個「\0」後便停止輸出,所以s的輸出為:XYZ
Ⅲ C語言自己寫strcpy函數怎麼寫
#include <stdio.h>
#define LEN 1024
/* */
static void *memcpy(void *d, const void * s, size_t n);
static void *memmove(void *d, const void *s, size_t n);
static char *strcpy(char *d, const char *s);
static char *strncpy(char *d, const char *s, size_t n);
/* link */
static char *strcat(char *s1, const char *s2);
static char *strncat(char *s1, const char *s2, size_t n);
/* len*/
static size_t strlen(const char *s);
/* cmp */
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
int memcmp(const void *s1, const void *s2, size_t n);
/* find */
void *memchr(const void *s, int key_char, size_t n);
char *strchr(const char *s, int key_char);
char *strstr(const char *s, const char *key_str);
size_t strcspn(const char *s1, const char *s2);
size_t strspn(const char *s1, const char *s2);
char *strpbrk(const char *s1, const char *s2);
/* other */
char *strtok(char *s1, const char *s2);
void *memset(void *s, int c, size_t n);
int main(void)
{
char buf[LEN] ;
char *src = "world";
char *ss = "oucch";
printf("strlen -> src[len] = %d\n", strlen(src));
printf("memcpy ->%s\n", (char *)memcpy(buf, src, strlen(src) + 1));
printf("buf -> %s\n", buf);
printf("memmove->%s\n", (char *)memmove(buf + 3,buf, strlen(buf) + 1));
printf("buf -> %s\n", buf);
printf("strcpy -> %s\n", strcpy(buf, src));
printf("buf -> %s\n", buf);
printf("strncpy -> %s\n", strncpy(buf, ss, 1));
printf("buf -> %s\n", buf);
printf("strcat -> %s\n", strcat(buf, src));
printf("buf -> %s\n", buf);
printf("strncat-> %s\n", strncat(buf, src, 1));
printf("buf -> %s\n", buf);
printf("strcmp : %d\n", strcmp("123", "1234"));
printf("strncmp : %d\n", strncmp("123", "1234", 3));
printf("strncmp : %d\n", strncmp("123", "1234", 5));
printf("memcmp: %d\n", memcmp("123", "1235", 4));
printf("strcspn: %d\n" ,strcspn("wangtianqing", "ang"));
return 0;}
static void * memcpy(void *d, const void *s, size_t n)
{
char *d1;
const char *s1;
for(d1 = d, s1 = s; 0 < n; --n)
*d1++ = *s1++;
return (d);
}
static void *memmove(void *d, const void *s, size_t n)
{
char *d1;
const char *s1;
d1 = d;
s1 = s;
if (s1 < d1 && s1 < d1 + n)
for(s1 += n, d1 +=n; 0 < n; --n)
*--d1 = *--s1;
else
for(; 0 < n; --n)
*d1++ = *s1++;
return (d);
}
static char *strcpy(char *d, const char *s)
{
char *d1;
const char *s1;
for(d1 = d, s1 = s; (*d1++ = *s1++) != '\0';)
;
return (d);
}
static char *strncpy(char *d, const char *s, size_t n)
{
char *d1;
const char *s1;
for(d1 = d, s1 = s; 0 < n && *s1 != '\0'; --n) {
*d1++ = *s1++;
}
for(; 0 < n; --n)
*d1++ = '\0';
return (d);
}
static size_t strlen(const char *s)
{
const char *s1;
for(s1 = s; *s1 != '\0'; ++s1)
;
return (s1 - s);
}
static char *strcat(char *s1, const char *s2)
{
char *st1;
const char *st2;
for(st1 = s1 ; *st1 != '\0'; ++st1)
;
for(st2 = s2; (*st1++ = *st2++) != '\0';)
;
return (s1);
}
static char *strncat(char *s1, const char *s2, size_t n)
{
char *st1;
const char *st2;
for(st1 = s1; *st1 != '\0'; ++st1)
;
for(st2 = s2; 0 < n && (*st1++ = *st2++) != '\0'; --n)
;
return (s1);
}
int strcmp(const char *s1, const char *s2)
{
for(; *s1 == *s2; ++s1, ++s2)
if(*s1 == '\0')
return (0);
return ((*(unsigned char *) s1 < *(unsigned char *) s2 ) ? -1: +1);
}
int strncmp(const char *s1, const char *s2, size_t n)
{
for(; 0 < n && *s1 == *s2; ++s1, ++s2)
if( *s1 == '\0')
return (0);
return (*(unsigned char *) s1 > *(unsigned char *) s2 ? -1 : +1);
}
int memcmp(const void *s1, const void *s2, size_t n)
{
const unsigned char *st1;
const unsigned char *st2;
for(st1 = s1, st2 = s2; 0 < n; ++st1, ++st2, --n)
if( *st1 != *st2)
return (*st1 < *st2 ? -1 : +1);
return 0;
}
void *memchr(const void *s, int key_char, size_t n)
{
const unsigned char uc = key_char;
const unsigned char *us;
for( us = s; 0 < n; --n, ++us)
if( uc == *us)
return ((void *)us);
return (NULL);
}
char *strchr(const char *s, int key)
{
const char *s1 = s;
for(; *s1 != '\0'; ++s1)
if(*s1 == key)
return ((char *)s1);
return (NULL);
}
size_t strcspn(const char *s1, const char *s2)
{
const char *sc1, *sc2;
for(sc1 = s1; *sc1 != '\0'; ++sc1)
for(sc2 = s2; *sc2 != '\0'; ++sc2)
if(*sc1 == *sc2)
return (sc1 - s1);
return (sc1 - s1);
}
size_t strspn(const char *s1, const char *s2)
{
const char *sc1;
const char *sc2;
for(sc1 = s1; *sc1 != '\0'; ++sc1) {
for(sc2 = s2; *sc2 != '\0'; ++sc2)
if(*sc1 == *sc2)
break;
if(*sc2 == '\0')
return (sc1 - s1);
}
return (sc1 - s1);
}
char *strpbrk(const char *s1, const char *s2)
{
const char *sc1, *sc2;
for( sc1 = s1; *sc1 != '\0'; ++sc1)
for( sc2 = s2; *sc2 != '\0'; ++sc2)
if (*sc1 == *sc2)
return ((char *)sc1);
return (NULL);
}
char *strstr(const char *s, const char *key_str)
{
if (*key_str == '\0')
return ((char *) s);
for(; (s = strchr(s, *key_str)) != NULL; ++s) {
const char *sc1, *sc2;
for (sc1 = s, sc2 = key_str; ;) {
if( *++sc2 == '\0')
return ((char *)s);
else if( *++sc1 != *sc2)
break;
}
}
return (NULL);
}
char *strtok(char *s1, const char *s2)
{
char *sbegin, *send;
static char *ssave = "";
sbegin = s1 ? s1 : ssave;
sbegin += strspn(sbegin, s2);
if( *sbegin == '\0') {
ssave = "";
return (NULL);
}
send = sbegin + strcspn(sbegin, s2);
if( *send != '\0')
*send++ = '\0';
ssave = send;
return sbegin;
}
void *memset(void *s, int c, size_t n)
{
const unsigned char uc = c;
unsigned char *su;
for( su = s; 0 < n; ++su, --n)
*su = uc;
return (s);
}
所有的函數原型都在這了 你想要哪個都行
謝謝採納
Ⅳ c語言中的strcpy是什麼意思
c語言中strcpy是一個C語言的標准庫函數,是string (字元串復制)的縮寫。strcpy函數的作用是把含有\0結束符的字元串復制到另一個地址空間,返回值的類型為char*。
C語言是一門面向過程的計算機編程語言,與C++、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。C語言描述問題比匯編語言迅速、工作量小、可讀性好、易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編語言代碼生成的目標程序效率低10%至20%。因此,C語言可以編寫系統軟體。當前階段,在編程領域中,C語言的運用非常之多,它兼顧了高級語言和匯編語言的優點,相較於其它編程語言具有較大優勢。計算機系統設計以及應用程序編寫是C語言應用的兩大領域。同時,C語言的普適較強,在許多計算機操作系統中都能夠得到適用,且效率顯著。
Ⅳ c語言 strcpy 函數的使用
1、strcpy函數是復制字元串的,接受兩個參數,一個是被復制字元串,另一個新字元串。具體的用法,首先打開編輯器新建一個c語言的程序文件,寫入頭文件和主函數:
Ⅵ c語言中的strcpy什麼意思,簡單點解釋
strcpy是一個C語言的標准庫函數,是string (字元串復制)的縮寫。strcpy函數的作用是把含有'