0
inFilename
및 outFilename
에 optarg를 할당하는 데 문제가 있습니다. 오류는 호환되지 않는 유형 오류가 발생했음을 나타냅니다. 이게 사소한 실수라면 용서해주세요, 일주일 전에 C를 배우기 시작했습니다.getopt() 사용시 문제가되는 optarg
편집 : 나는 strncpy를 사용했지만 세분화 오류가 발생했습니다.
편집 : 여기 내가이를 사용하여 계획하는 방법입니다
./sortfile -i input.txt를 -o
int main(int argc, char *argv[]) {
char c;
const int MAX_FILENAME_LEN = 256;
const int MAX_NUMBERS = 100;
int xFlag = 0;
int yFlag = 0;
char inFilename[MAX_FILENAME_LEN];
char outFilename[MAX_FILENAME_LEN];
int *numbers; // number array: to be dynamically allocated
int count;
int exitValue = 1;
//printf("Enter the input file name: ");
//scanf("%s", inFilename);
while ((c = getopt(argc, argv, "ioxy")) != -1) {
switch (c) {
case 'i':
strncpy(inFilename, optarg, sizeof(inFilename) - 1);
break;
case 'o':
strncpy(outFilename, optarg, sizeof(outFilename) - 1);
break;
case 'x':
xFlag = 1;
break;
case 'y':
yFlag = 1;
break;
case '?':
fprintf(stderr, "Unrecognized option!\n");
break;
}
}
if (!inFilename || !outFilename) {
fprintf(stderr, "Must have -i and -o option!\n");
exit(0);
}
numbers = (int *) malloc(MAX_NUMBERS * sizeof(int));
count = readNumbers(numbers, inFilename);
if (count >= 0) {
//printf("Enter the output file name (will be created/overwitten): ");
//scanf("%s", outFilename);
printArray(numbers, count);
bubbleSort(numbers, count, true);
printArray(numbers, count);
writeNumbers(numbers, count, outFilename);
}
free(numbers);
return exitValue;
}
OUTPUT.TXT 여기 변경하기 전에 프로그램입니다. 이 프로그램은 작동합니다.
int main(void) {
const int MAX_FILENAME_LEN = 256;
const int MAX_NUMBERS = 100;
char inFilename[MAX_FILENAME_LEN];
char outFilename[MAX_FILENAME_LEN];
int *numbers; // number array: to be dynamically allocated
int count;
int exitValue = 1;
printf("Enter the input file name: ");
scanf("%s", inFilename);
numbers = (int *) malloc(MAX_NUMBERS * sizeof(int));
count = readNumbers(numbers, inFilename);
if (count >= 0) {
printf("Enter the output file name (will be created/overwitten): ");
scanf("%s", outFilename);
printArray(numbers, count);
bubbleSort(numbers, count, true);
printArray(numbers, count);
writeNumbers(numbers, count, outFilename);
exitValue = 0;
}
free(numbers);
return exitValue;
}
는'c' 여기 –
정의되지 않은 @self 아 미안, C가 정의 인수를해야
getopt()
하지만 이후에게 내 주요 방법은 매우 길고, 관련 부분 만 게시했습니다. 필요한 경우 게시 할 수 있습니다. – mrQWERTYC와 같은 배열에는 할당 할 수 없기 때문에'strcpy()'또는 친구를 사용해야합니다. –