比较2个字符串并获得错误预期表达式

时间:2016-01-24 20:51:24

标签: c string compare cs50

我正在开发一个项目,您可以在其中输入名称并打印首字母。当我尝试比较字符串时,我得到一个"期望的表达式"错误。我做错了什么?

#include <stdio.h>
#include <stdlib.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>

int main(void) {
   printf("Name: ");
   string name = GetString();
   printf("\n");

   int length = strlen(name);
   string compair1 = " ";
   for(int l = 0;l<=length;l++) {
      char compair2 = name[l];
      int  res = strcmp(compair1,&compair2);
      if(res == 0) {
         printf("found blank space");
      }
   }
}

2 个答案:

答案 0 :(得分:2)

  • 如果您想寻找空间,那么您可以这样做:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    
    int main(void)
    {
       printf("Name: ");
       char name[20];
       gets(name);
       printf("\n");
    
      int length = strlen(name);
      for(int l = 0;l < length;l++)
      {
          if(name[l] == ' ')
          printf("found blank space");
      }
    }
    

答案 1 :(得分:0)

你应该查找strtok()。这是一个例子。

#include <string.h>
#include <stdio.h>

int main()
{
    char str[] = "Bufford T Justice";
    char *token;
    char space = ' ';
    int count = 0;

    token = strtok(str, &space);

    while( token != NULL ) 
    {
        printf( "%s\n", token );
        token = strtok(NULL, &space);
        if( token )
        {
            count++;
        }
    }

    printf("Number of spaces = %d\n", count);
    return(0);
}

从这个片段中确定输入名称的首字母只是少数几行。

注意:如果您不希望strtok()修改字符串,则可以使用strchr()进行一些小的更改。