重複の可能性:
C プログラミング言語の配列のサイズ?
私は C に精通するために C をいじっていましたが、解決方法がわからない初期化/ポインターの問題に遭遇した可能性があると思います。以下のプログラムは ROT13 の実装であるため、入力文字列を受け取り、各文字を 13 ずつシフトして、暗号文を生成します。私のプログラムの出力には正しいシフトが表示されますが、4 文字を超えると機能しません。sizeof が間違って使用されているのではないかと思います。他の提案は大歓迎です。この時点でいくつかのことを台無しにしたと確信しています。
#include <stdio.h>
#include <string.h>
void encrypt(char *);
int main(void){
char input[] = "fascs";
encrypt(input);
return 0;
}
void encrypt(char *input){
char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
printf("Input: %s \n", input);
int inputCount = sizeof(input);
printf("Characters in Input: %i \n\n", inputCount);
//holds encrypted text
char encryptedOutput[inputCount];
//Initialize counters
int i, j = 0;
// loop through alphabet array, if input=current letter, shift 13 mod(26),
// push result to output array, encryptedOutput
for(i = 0; i < inputCount; i++){
for(j = 0; j < 26; j++){
if(input[i] == alphabet[j]){
encryptedOutput[i] = alphabet[(j + 13) % 26];
}
}
}
//Nul Termination for printing purposes
encryptedOutput[i] = '\0';
printf("Rot 13: %s \n\n", encryptedOutput);
}