지정된 길이의 모든 라인을 선택해야하는 필터를 작성하고 있습니다. 나는이 코드를 가지고 끝내지 만, n
을 지정하는 방법을 모른다. 즉, n
(및 선택적으로 m
)을 명령 프롬프트에서 여러 행으로 대체해야하지만 코드에서이를 설명하는 방법을 모릅니다. 나는 case "%d"
을 생각했지만, 내가 아는 바로는 그렇게 쓰는 것은 불가능합니다. 이것이 내가 지금까지 가지고있는 코드입니다 :길이가 C 인 필터를 선택하십시오.
#include<stdio.h>
#include<string.h>
int main(int argc, char *argv[])
{
int n;
int m;
char line[200];
while(fgets(line,sizeof(line)/sizeof(char), stdin)!=NULL)
{
if(argc>1){
switch(argv[0][0])
{
case 'n':
strlen(line)==n;
break;
case '#n':
strlen(line)<n;
break;
case 'n m':
strlen(line)>=n && strlen(line)<=m;
break;
case 'n#':
strlen(line) > n;
break;
}
printf("%s\n", line);
}}
return 0;
}
당신의 도움은 내게 많은 의미가 있습니다! 나는 더 이상 작동시키지 못한다.
'sizeof (char)'는 항상 1입니다. 이는 C 표준에서 요구하고 있으며 구현 방식에 따라 평가되기 때문에 기대 한 바가 아닐 수도 있습니다. –
스위치를 놓거나 argv [0] [0]과 argv [0] [1]을 검사 할 수 있습니다 ... –
''n m ''은 문자열이므로''''''''''! ! 그리고'switch()'블록의'case'는 ** const-integral-expressions **이어야합니다! ** !! 왜'if()'문장을 사용하지 않을까요 ?? –