加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用strcpy连接字符串

发布时间:2020-12-16 10:30:37 所属栏目:百科 来源:网络整理
导读:这是我的代码 #include stdio.h#include string.h#include stdlib.hint main() { char f[] = "First"; char s[] = "Second"; char *tmp = malloc(strlen(f) + strlen(s) + 2); strcpy(tmp,f); strcpy(tmp,s); printf("%s",tmp); free(tmp); return 0;} 我正
这是我的代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main() {

 char f[] = "First";
 char s[] = "Second";
 char *tmp = malloc(strlen(f) + strlen(s) + 2);
 strcpy(tmp,f);
 strcpy(tmp,s);
 printf("%s",tmp);
 free(tmp);
 return 0;
}

我正在尝试连接f和s.问题是tmp只包含“Second”作为数组.
我想念的是什么

解决方法

如果你坚持使用strcpy,你的代码应该稍加修改:

int main() {
    const char *f = "First";
    const char *s = "Second";
    char *tmp = malloc(strlen(f) + strlen(s) + 1);
    strcpy(tmp,f);
    strcpy(tmp+strlen(f),s);
    printf("%s",tmp);
    free(tmp);
    return 0;
}

出于安全原因,您应该考虑使用strncpy而不是strcpy.此外,strcat是用于连接C字符串的更常规功能.

编辑以下是使用strncpy而不是strcpy的示例

#define MAX 1024

int main() {
    const char *f = "First";
    const char *s = "Second";
    size_t len_f = min(strlen(f),MAX);
    size_t len_s = min(strlen(s),MAX);
    size_t len_total = len_f + len_s;
    char *tmp = malloc(len_total + 1);
    strncpy(tmp,f,len_f);
    strncpy(tmp+len_f,s,len_s);
    tmp[len_total] = '';
    printf("%s",tmp);
    free(tmp);
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读