私のプログラムでいくつかのテストをしていましたが、私の関数を入力するときにプログラムがクラッシュする理由が不思議でした。私のツールを手元に使う方法を理解しているかどうかを確認する段階にあったので、プログラムのロジックに気にしないでください。どのような構文がchar配列とそのポインタに関して欠けているのですか
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Constants */
#define HEX_CAPITAL_LETTERS_BEGIN 65
#define HEX_CAPITAL_LETTERS_END 90
#define HEX_NUMBERS_BEGIN 48
#define HEX_NUMBERS_END 57
#define EXIT_SUCCES 0
/* Prototypes */
void codeToField(char *charArray, int i, int hexFloor, int hexCeil, char *outputArray);
/* Main Function */
int main(void) {
char *code, warehouse, product, qualifiers;
int i = 0;
printf("Enter a MMOC product code: ");
scanf("%s", &code);
codeToField(code, i, HEX_CAPITAL_LETTERS_BEGIN, HEX_CAPITAL_LETTERS_END, &warehouse);
codeToField(code, i , HEX_NUMBERS_BEGIN, HEX_NUMBERS_END, &product);
strcpy(&qualifiers, code + i);
printf("\n\nWarehouse: %s\nProduct: %s\nQualifiers: %s\n", &warehouse, &product, &qualifiers);
return EXIT_SUCCES;
}
void codeToField(char *charArray, int i, int hexFloor, int hexCeil, char *outputArray) {
int j = 0;
while (charArray[i] >= hexFloor && charArray[i] <= hexCeil) {
outputArray[j] = charArray[i];
i++;
j++;
}
}
ありがとうございます。
「A」、「Z」、「0」などの代わりに「65」や「90」などの数字を使用する理由は何ですか? – trentcl
なぜあなたは 'strcpy'を1文字にしようとしていますか? –
@ M.M私が言ったように、手元の問題以外は何も気にしないでください。私が欲しいものを見つけようとしていて、本当にテストしただけです。問題を置くすべては、ハハを投稿する前にコメントアウトされていた。 –