- 论坛徽章:
- 0
|
下面这段代码,存在溢出问题。
假如s1、s2是数组的话,倒是可以把11、12行改成strncpy(s1, str1, sizeof(s1));strncpy(s2, str2, sizeof(s2));
现在是指针,请问怎么改合适呢?谢谢。
1 #include <stdio.h>
2 #include <string.h>
3
4 void foo(char *s1, char *s2);
5
6 void foo(char *s1, char *s2)
7 {
8 char *str1 = "foobar";
9 char *str2 = "hello, world";
10
11 strcpy(s1, str1);
12 strcpy(s2, str2);
13 }
14
15 #define BUF_SZ 8
16
17 int main(void)
18 {
19 char a1[BUF_SZ];
20 char a2[BUF_SZ];
21
22 foo(a1, a2);
23 printf("a1 = '%s'\n", a1);
24 printf("a2 = '%s'\n", a2);
25
26 return 0;
27 } |
|
|