編寫strcpy(s,t,n)函數 ,將t中最多前n個字符復制到s中


#include <stdio.h>
void strcpy(char *s,char *t,int n);
main()
{
     char t[]="hello";
     char s[]="";
     strcpy(s,t,2);
     printf("result:%s",s); 
     system("pause");
}

void strcpy(char *s,char *t,int n)
{  
   int count;
   count =0;
   while((*s++ =*t++)&&(count <n)) 
       count++;
}
執行的結果是:hello  為什么呢 count 的限制不起作用 怎么把t中元素都復制到s中了,哪里出了問題 ,請大家幫助解答一下

8 个解决方案

#1


循環完了才加,當然不行了

#2


不是都復制了,只是復制了3個字符而已while((*s++ =*t++)&&(count <n)) 
這里循環了2遍,第三遍又執行了一次*s++ =*t++,但count <n條件不滿足退出了

#3


復制完加個0封口

#4


樓主能把函數名寫得和標准庫函數不一樣嗎?
#include <stdio.h>
void mystrcpy(char *s,char *t,int n);

char t[]="hello";
char s[6];
main()
{

    mystrcpy(s,t,2);
    printf("result:%s",s);
    system("pause");
}

void mystrcpy(char *s,char *t,int n)
{
    int count;
    count =0;
    while ((*s++ =*t++)&&(count <n))
        count++;
}

#5


問題找到了,char s[]="";數組沒設置大小,但是我不是很理解,為什么不設置大小,t中字符全復制去了呢

#6


兩個問題:
1. char s[]="";
   這個句子只給s數組分配一個字節的空間,所以數組越界是肯定的,結果是不可預期的。
2. strcpy沒有在復制完后加結束符,當是count >= n造成循環退出的,s字串是不帶結束符時,不宜使用printf輸出結果。


#include <stdio.h>
void strcpy(char *s,char *t,int n);
int main()
{
  char t[]="hello";
  char s[10]={0};
  strcpy(s,t,2);
  printf("result:%s\n",s);
  system("pause");
}

void strcpy(char *s,char *t,int n)
{   
  int count;
  count =0;
  while((*s++ =*t++)&&(count <n))  
  count++;
  *s = '\0';
}



#7


引用 5 樓 newlangwen1 的回復:
問題找到了,char s[]="";數組沒設置大小,但是我不是很理解,為什么不設置大小,t中字符全復制去了呢

你確定結果是“hello”,不是“helllo”?

#8


引用 7 樓 cmarquis 的回復:
你確定結果是“hello”,不是“helllo”?

++++++

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



strncpy(s,t,n)將t中最多前n個字符復制到s中 編寫一個程序,將字符數組s2中的全部字符復制到s1中。即實現strcpy函數功能 練習 3-2 編寫一個函數escape(s, t),將字符串t復制到字符串s中,並在復制過程中將換行符、制表符等不可見字符分別轉換為\n、\t等相應的可見的轉義字符序列。要求使用swich語句。 練習3-2 編寫一個函數escape(s,t),將字符串t復制到字符串s中,並在復制過程中將換行符、制表符等不可見字符轉換為\n、\t等相應的可見的轉義字符序列。要求使用switch語句。 已知一個字符串S 以及長度為n的字符數組a,編寫一個函數,統計a中每個字符在字符串中的出現次數 編寫一個字符串復制函數mystrcopy(char*s1,char*s2,int m),將字符串s2中從第m個開始全部字符都復制到s1中 Linux_C練習:編寫一個函數,求字符數組的前n個字符中最大字符的地址並返回該地址,字符數組和n作為函數的參數; 編寫一個求字串的函數sub_str(char *s1,char *s2,int m,int n),作用是將字符串s1中從第m個字符開始的n個字放入字符串s2中; 編寫一個程序,將字符數組s2中的全部字符復制到字符數組s1中,不用strcpy函數,編譯結果不一致! 動態規划:多少次可以把一個字符復制到N個字符?
 
粤ICP备14056181号  © 2014-2020 ITdaan.com