0

私はargv [1]を受け取り、それに従って文字を小文字または大文字に変換するプログラムを構築することになっています.しかし、Cはポインターを文字列と比較できないため、行き詰まっています.文字列、文字ごとに比較したくありません。ここにコードがあります

 #include <stdio.h>
#include <ctype.h>
#include <string.h>
int main (int argc,char *argv[])
{
    char c;
    if(argc!=2)
    printf("Wrong use of program \n");
    printf("The Format is Lower or Upper \n");
    return -1;
    if ((strcmp(argv[1],"Lower"))==0) 
    {
                          while((c=getchar())!=EOF)
                          {
                                                   printf("-");
                                                   putchar(tolower(c));
                                                   printf("\n");
                                                   } 
                                                   }
    if ((strcmp(argv[1],"Upper"))==0) 
    {
                          while((c=getchar())!=EOF)
                          {
                                                   printf("-");
                                                   putchar(toupper(c));
                                                   printf("\n");
                                                   }
                                                   }
    if ((strcmp(argv[1],"Lower"))!=0 && ((strcmp(argv[1],"Upper"))!=0))
    {
                          printf("Wrong use of program \n");
                          printf("The Format is Lower or Upper \n");
                          return -1;
                          }

                       return 0;
}
4

2 に答える 2

3

やりたいことは、関数 strcmp または stricmp を使用することです (大文字と小文字を区別しないため)。

于 2013-03-16T13:59:28.443 に答える
2

まず、char 配列が一致する場合に 0 を返す strcmp を使用します。

if (!strcmp(argv[1], "Lower"))
{

次に、複数のステートメントが if 条件に適用される場合、ステートメントは {} で囲む必要があります。

if (argc != 2)
{
   printf("Wrong use of program \n");
   printf("The Format is Lower or Upper \n");
   return -1;
}
于 2013-03-16T14:01:04.700 に答える