Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我正在做一个(字符串)函数,它混合了两个单词,但程序根本不工作_C_String_For Loop - Fatal编程技术网

C 我正在做一个(字符串)函数,它混合了两个单词,但程序根本不工作

C 我正在做一个(字符串)函数,它混合了两个单词,但程序根本不工作,c,string,for-loop,C,String,For Loop,没有编译器错误,但当我运行程序并写入两个单词和位置时,程序停止并写入此错误: :进程返回255 #包括 #包括 字符串(字符[],字符[],整数,整数,整数); 内部主(空) { char-zk1[1000]; char-zk2[1000]; int pos=0; int n1=0; int n2=0; printf(“请输入第一个字符串:”); 获取(zk1); n1=sizeof(zk1)/sizeof(int); printf(“请输入第二个字符串:”); 获取(zk2); n2=size

没有编译器错误,但当我运行程序并写入两个单词和位置时,程序停止并写入此错误:

:进程返回255

#包括
#包括
字符串(字符[],字符[],整数,整数,整数);
内部主(空)
{
char-zk1[1000];
char-zk2[1000];
int pos=0;
int n1=0;
int n2=0;
printf(“请输入第一个字符串:”);
获取(zk1);
n1=sizeof(zk1)/sizeof(int);
printf(“请输入第二个字符串:”);
获取(zk2);
n2=sizeof(zk2)/sizeof(int);
printf(“plz输入位置”);
scanf(“%d”和“&pos”);
条纹(zk1,zk2,位置,n1,n2);
返回0;
}
字符串(字符zk1[],字符zk2[],整数位,整数n1,整数n2)
{
char zk3[]={(char)malloc(sizeof(zk1)+sizeof(zk2))};
int ctr=0;
对于(inti=0;i像这样固定样本

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

char *strins(char s1[], char s2[], int insert_pos, int sizeOfS1, int sizeOfS2);

int main(void){
    char zk1[1000];
    char zk2[1000];
    char *zk3;
    int pos=0;
    int n1, n2;

    printf("plz enter the first string : ");
    scanf("%999[^\n]%*c", zk1);//gets shouldn't use. (already obsolete)
    n1=sizeof(zk1);//strlen(zk1);
    printf("plz enter the second string : ");
    scanf("%999[^\n]%*c", zk2);
    n2=sizeof(zk2);//sizeof(int) --> sizeof(char) but it's 1 by standard
    printf("plz enter the position");
    scanf("%d", &pos);
    zk3 = strins(zk1, zk2, pos, n1, n2);
    puts(zk3);
    free(zk3);
    return 0;
}

char *strins(char zk1[], char zk2[], int pos, int n1, int n2){
    char *zk3 = malloc(n1 + n2);//+1 when use stelen for null-terminate
    int ctr=0;

    for(int i = 0; i < pos; i++){//pos isn't checking of valid
        zk3[ctr++] = zk1[i];
    }
    for(int i = 0; zk2[i]; i++){//loop Until the '\0'
        zk3[ctr++] = zk2[i];
    }
    for(int i = pos; zk1[i]; i++){
        zk3[ctr++] = zk1[i];
    }
    zk3[ctr] = '\0';

    return zk3;
}
#包括
#包括
#包括
字符*strins(字符s1[],字符s2[],整数插入位置,整数大小fs1,整数大小fs2);
内部主(空){
char-zk1[1000];
char-zk2[1000];
char*zk3;
int pos=0;
int n1,n2;
printf(“请输入第一个字符串:”);
scanf(“%999[^\n]%*c”,zk1);//gets不应使用。(已过时)
n1=sizeof(zk1);//strlen(zk1);
printf(“请输入第二个字符串:”);
scanf(“%999[^\n]%*c”,zk2);
n2=sizeof(zk2);//sizeof(int)-->sizeof(char),但按标准是1
printf(“plz输入位置”);
scanf(“%d”和“&pos”);
zk3=strins(zk1、zk2、pos、n1、n2);
puts(zk3);
自由基(zk3);
返回0;
}
字符*strins(字符zk1[],字符zk2[],整数位置,整数n1,整数n2){
char*zk3=malloc(n1+n2);//+1当使用stelen表示空终止时
int ctr=0;
对于(int i=0;i
sizeof(zk1)+sizeof(zk2))
sizeof(zk1)
sizeof(zk2)
sizeof(char*)
,而不是
sizeof(char[1000])
。好的,我写了这个((char zk3[]={(char malloc sizeof(char*)+sizeof(char*)}),它给了我同样的错误,你能解释一下吗(char[1000])+sizeof(char[1000]);
char*zk3=malloc(strlen(zk1)+strelen(zk2)+1);
zk3[pos]=zk2[i];
:相同位置的字符更新。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *strins(char s1[], char s2[], int insert_pos, int sizeOfS1, int sizeOfS2);

int main(void){
    char zk1[1000];
    char zk2[1000];
    char *zk3;
    int pos=0;
    int n1, n2;

    printf("plz enter the first string : ");
    scanf("%999[^\n]%*c", zk1);//gets shouldn't use. (already obsolete)
    n1=sizeof(zk1);//strlen(zk1);
    printf("plz enter the second string : ");
    scanf("%999[^\n]%*c", zk2);
    n2=sizeof(zk2);//sizeof(int) --> sizeof(char) but it's 1 by standard
    printf("plz enter the position");
    scanf("%d", &pos);
    zk3 = strins(zk1, zk2, pos, n1, n2);
    puts(zk3);
    free(zk3);
    return 0;
}

char *strins(char zk1[], char zk2[], int pos, int n1, int n2){
    char *zk3 = malloc(n1 + n2);//+1 when use stelen for null-terminate
    int ctr=0;

    for(int i = 0; i < pos; i++){//pos isn't checking of valid
        zk3[ctr++] = zk1[i];
    }
    for(int i = 0; zk2[i]; i++){//loop Until the '\0'
        zk3[ctr++] = zk2[i];
    }
    for(int i = pos; zk1[i]; i++){
        zk3[ctr++] = zk1[i];
    }
    zk3[ctr] = '\0';

    return zk3;
}