我想實現的「希伯來文加密」,其工作原理如下:填充空C字符串正確
- 輸入列和行
- 輸入的號碼文本加密
- 填充文本陣列
- 輸出文本collumns第一
實施例:
- 5由4: 「這是一個例子。」
This is an exam ple..
- 輸出:「鈦phseli xesaa。 。納米」
然而,我有麻煩的文本比所述陣列較短具有空間:
- 5由4: 「這是一個」
This is an ????
其中'?'是隨機的(?)字符。
我的猜測是,我不正確格式化字符串。目前,我請檢查是否一個字符爲「\ n」或「\ 0」,並用空格代替它。
。任何幫助表示讚賞
我的代碼如下所示:
#include <stdio.h>
#include <string.h>
int main(void){
int x, y;
printf("Please input rows and collumns: \n");
scanf("%d", &x);
scanf("%d", &y);
char string[x*y];
printf("Please insert text: \n");
fgets(string, x*y, stdin); //ignore \n from previous scanf (otherwise terminates
fgets(string, x*y, stdin); //immediatly as \n is still there)
int k = 0;
char code[y][x];
for(int i=0; i < x*y; i++){
if(string[i] == '\n' || string[i] == '\0')
string[i] = ' ';
}
for(int i=0; i < y; i++){
for(int j=0; j < x; j++){
code[i][j] = string[k];
k++;
}
}
//output of matrix
for(int i=0; i < y; i++){
for(int j=0; j < x; j++){
printf("%c ",code[i][j]);
}
printf("\n");
}
//matrix to message
k = 0;
char message[128];
for(int j=0; j < x; j++){
for(int i=0; i < y; i++){
message[k] = code[i][j];
k++;
}
}
printf("%s \n", message);
return 0;
}
字符串大小和fgets參數應該是'x * y + 1',否則你會錯過最後的charaacter – Jasen