C語言復制數組


 直接上代碼,分別是棧上開辟內存,堆上開辟內存

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 void test01(){
 5     char filename[100];
 6 
 7     printf("請輸入視頻路徑:\n");
 8     scanf("%s", filename);
 9 
10     char *out_filename = malloc(sizeof(char)* 200);
11     memset(out_filename, 0, sizeof(char)* 200);
12     int pos = 0;
13     for (int i = 0; i < strlen(filename) - 4; ++i){
14         out_filename[pos++] = filename[i];
15     }
16     out_filename[pos] = '\0'; //不寫\0會出現燙燙燙亂碼
17     strcat(out_filename, "_out.avi");
18     printf("%s\n", out_filename);
19     free(out_filename);
20     out_filename = NULL;
21 }
22 
23 void test02(){
24     char filename[100];
25 
26     printf("請輸入視頻路徑:\n");
27     scanf("%s", filename);
28 
29     char tmp[100] = { 0 };
30     int pos = 0;
31     for (int i = 0; i < strlen(filename) - 4; ++i){
32         tmp[pos++] = filename[i];
33     }
34     tmp[pos] = '\0'; //不寫\0會出現燙燙燙亂碼
35     strcat(tmp, "_out.avi");
36 
37     printf("%s\n", tmp);
38 }
39 
40 int main(){
41 
42     test01();
43     test02();
44 
45     system("pause");
46     return 0;
47 }

如果是用指針來復制數組,不要用以下代碼

char *out_filename = 0;

因為沒有開辟內存,直接對指針自增會出現訪問沖突

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM