.txt 파일을 인수로받는 C 프로그램을 작성 중입니다. .txt 인 내부 정수 번호 행은 다음과 같이, 그들 사이에 공간이있다 : I는 정수가 아닌 문자가 .txt 파일 내부에 표시하는 경우처럼, 알아 하죠C : 배열에서 숫자가 아닌 문자 검색
1 2 3 4
5 6 7 8
...
이 :
C에는 instanceof 연산자가 없기 때문에, I는 0-9 번호를 포함하고 공간 또는 정수 중 하나 인 경우,이 .txt 파일의 각 문자를 확인 배열을 사용1 2 a 4
...
. 둘 다 같지 않으면 프로그램을 종료해야합니다. 파일에 문제가 없으면 프로그램은 중간 값을 계산하고 stdout에 줄을 인쇄합니다. 이 내 코드입니다 :
#include <stdio.h>
#include <ctype.h>
int arrayContains(char value);
int main(int argc, char **argv) {
const int LINESIZE = 255;
if (argc != 2) {
printf("wrong args!");
return -1;
}
char *command1 = argv[1];
FILE *handle = fopen(command1, "r");
if (!handle) {
printf("file not found!");
return -1;
}
int count = 0;
int sum = 0;
int median;
char string[LINESIZE];
while (fgets(string, LINESIZE, handle) != NULL) {
for (int i = 0; i <= sizeof(string)/sizeof(string[0]) - 1; i++) {
printf("%c", string[i]);
if (string[i] == ' ') {
i++;
}
else if (arrayContains(string[i]) == 0) {
count++;
sum += (int)string[i];
}
else {
printf("non-integer-character found!\n");
return -1;
}
}
median = sum/count;
printf("%s\n", string);
printf("%d\n", median);
}
}
int arrayContains(char value) {
const char numbers[10] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
for (int i = 0; i <= 9; i++) {
if (numbers[i] == value) {
return 0;
}
}
return -1;
}
이제 프로그램의 출력은 TXT 파일의 첫 번째 숫자는 항상 즉시 그 이후 : "정수가 아닌 문자가 발견". ArrayContains() 함수 내의 gets()에서 문자열의 요소와 상수 "numbers"배열의 요소를 비교하면 arrayContains() 함수에서 항상 -1이 반환됨을 알 수 있습니다. 내가 뭘 잘못하고 있니?
['남자 isdigit'] (https://linux.die.net/man/3/isdigit) –
'내가 <= sizeof 연산자 (문자열)/ – BLUEPIXY
관련이 없지만 "정수가 아닌 문자"와 같은 것은 없지만 "자릿수가 아닌 문자"가 있습니다. –