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]
将解决问题…该死,非常感谢!