이 가장 중요한 문제 :
- 인수가 확인하기 전에 인수의 수를 확인하여야한다.
- 최대 길이를 알고있는 경우
strcmp()
또는 더 나은 strncmp()
과 같은 표준 라이브러리 함수를 사용하여 문자열을 비교합니다.
여기는 코드 번호입니다. 희망이 도움이됩니다.
#include <stdio.h>
#include <string.h>
int main (int argc, char* argv[])
{
if ((argc > 1) && ((strcmp(argv[1], "a") == 0)))
{
printf("hello world, argc: %d\n", argc);
}
else if ((argc > 1) && (strcmp(argv[1], "2") == 0))
{
printf("hello everyone, argc: %d\n", argc);
}
for (int i = 0; i < argc; i++)
printf("%s\n", argv[i]);
return 0;
}
일부 세부 사항은 비교 문자열입니다. 여기에 ==
연산자를 사용하면 (오버로드하지 않았다면) 객체 주소를 비교하면됩니다 (두 경우 모두 char *
). 분명히 문자열 리터럴과 인자 버퍼는 다른 주소를 가지고 있습니다. 내용을 비교해야합니다. 사실 C++에서는 std::string
을 생성하고 비교 연산자를 사용할 수 있습니다.
그래서 ==
운영자에 따라 작품을 다른, 더 C++ 솔루션 :
#include <stdio.h>
#include <string>
int main (int argc, char* argv[])
{
if ((argc > 1) && (std::string(argv[1]) == "a"))
{
printf("hello world, argc: %d\n", argc);
}
else if ((argc > 1) && (std::string(argv[1]) == "2"))
{
printf("hello everyone, argc: %d\n", argc);
}
for (int i = 0; i < argc; i++)
printf("%s\n", argv[i]);
return 0;
}
'=='대신'strcmp'를 사용해야합니다 –
@Andreas 매우 빠르게 :) – ha9u63ar
이 태그는 C++로,'(std :: string (argv [1]) == "a" 더 적절할 수도 있습니다. – Roddy