C 如果上一个数组是位于同一位置的字符,则填充数组

C 如果上一个数组是位于同一位置的字符,则填充数组,c,arrays,string,char,C,Arrays,String,Char,描述可能会非常混乱,因此最好举个例子: void fillKey (char **matrix, char **key, int length) { int k = 0; //fill key array until same num of chars for (int i = 0; i < length; i++) { //only fill at fields with alphab if ( isalpha(matrix[0][i])

描述可能会非常混乱,因此最好举个例子:

void fillKey (char **matrix, char **key, int length) {

   int k = 0;
   //fill key array until same num of chars
   for (int i = 0; i < length; i++) {
       //only fill at fields with alphab
       if ( isalpha(matrix[0][i]) != 0 ) {
           matrix[1][i] = key[1][k];
           k++;
           if ( k>= strlen(key[1]) )
               k = 0;
       }

   }

   printf("%s\n", matrix[0]);
   printf("%s\n", matrix[1]);
}
void fillKey(字符**矩阵,字符**键,整数长度){
int k=0;
//填充键数组,直到字符数相同为止
for(int i=0;i=strlen(键[1]))
k=0;
}
}
printf(“%s\n”,矩阵[0]);
printf(“%s\n”,矩阵[1]);
}
输入:
helloworld
abc
键结果应为:

你好,世界

abcabca

但是,函数在任何非alpha字符之后停止工作

void fillKey (char **matrix, char **key, int length) {

   int k = 0;
   //fill key array until same num of chars
   for (int i = 0; i < length; i++) {
       //only fill at fields with alphab
       if ( isalpha(matrix[0][i]) != 0 ) {
           matrix[1][i] = key[1][k];
           k++;
           if ( k>= strlen(key[1]) )
               k = 0;
       }
       else
       {
           matrix[1][i] = matrix[0][i];
       }
   }

   printf("%s\n", matrix[0]);
   printf("%s\n", matrix[1]);
}
你好,世界

abcab

我做错了什么


编辑:已解决,跳过的数组字段将为空,这意味着我必须复制非alpha字符。

如果第二个字符串充满空字符,则当您跳过复制空格时,printf将在第一个空字符处停止打印,该空字符对应于第一个非alpha字符。

void fillKey(字符**矩阵,字符**键,整数长度){
void fillKey (char **matrix, char **key, int length) {

   int k = 0;
   //fill key array until same num of chars
   for (int i = 0; i < length; i++) {
       //only fill at fields with alphab
       if ( isalpha(matrix[0][i]) != 0 ) {
           matrix[1][i] = key[1][k];
           k++;
           if ( k>= strlen(key[1]) )
               k = 0;
       }
       else
       {
           matrix[1][i] = matrix[0][i];
       }
   }

   printf("%s\n", matrix[0]);
   printf("%s\n", matrix[1]);
}
int k=0; //填充键数组,直到字符数相同为止 for(int i=0;i=strlen(键[1])) k=0; } 其他的 { 矩阵[1][i]=矩阵[0][i]; } } printf(“%s\n”,矩阵[0]); printf(“%s\n”,矩阵[1]); }
我已经添加了
else
部分。如果没有这一部分,非字母字符的
matrix[1][I]
将为空,之后将不会写入任何内容。

好的,所以
if(isalpha){…}else{matrix[1][I]=matrix[0][I]
将解决问题…该死,非常感谢!