小编pro*_*mer的帖子

C中的strncpy和strcat垃圾字符

我试着编写一个程序,它从字符串s1复制第一个k字符,然后将结果与字符串s2的其余部分连接,从位置i开始,然后在结果中连接s1的其余部分.但我遇到了一些问题strncpy.它在控制台中显示了一些奇怪的字符,如@.

这是我的代码:

char* strninsert(char *s1, char *s2, int k,int i)
{
    int n=strlen(s1)+strlen(s2)+10; // if i put for exemple 1000 it works
    char *result=(char*)malloc(n*sizeof(char));
    result[0]='\0';
    strncpy(result,s1,k);
    strcat(result,(s2+i));
    strcat(result,(s1+k));
    puts(result);
    return(result);
}

int main()
{
    int lens;
    printf("size string 1 ");
    scanf("%d",&lens);
    char *s=(char*)malloc((lens+1)*sizeof(char));
    getchar();
    fgets(s,lens+1,stdin);

    int lenx;
    printf("enter size string 2 ");
    getchar();
    scanf("%d",&lenx);
    char *x=(char*)malloc((lenx+1)*sizeof(char));
    getchar();
    fgets(x,lenx+1,stdin);

    int lentemp=lenx+lens;
    char *temp=(char*)malloc((lentemp+1)*sizeof(char));

    temp=strninsert(s,x,2,3);
    puts(temp);
    return(0);
}
Run Code Online (Sandbox Code Playgroud)

它会在strncpy指令 之后显示奇怪的字符poes@<line.

c string strcpy strncpy strcat

0
推荐指数
1
解决办法
907
查看次数

标签 统计

c ×1

strcat ×1

strcpy ×1

string ×1

strncpy ×1