为什么我会收到错误“使用未声明的标识符?”

时间:2016-05-31 11:30:09

标签: c for-loop identifier cs50

我已经搜索过但无法解决为什么我在for循环中声明它时会出现此错误的原因?

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

int main (void)
{
    char* sur;
    char* space = " ";
    char* name = GetString();

    printf("%c\n", name[0]);

    for(int i = 0, n = strlen(name); n < i; i++);
    {
        if (strcmp(name[i],space)==0)
        {
        sur = name[i + 1];
        }
        else
        {
        return 0;
        }
    }
    printf("%s\n", sur);
}

3 个答案:

答案 0 :(得分:3)

循环声明后你有一个额外的分号:

<dom-module id="my-iron-list">
  <template>
    <iron-list items="[]" as=item id="list" scroll-target="[[scrollTarget]]">
      <template>
        <div class="item">[[item]]</div>
      </template>
    </iron-list>

    <iron-scroll-threshold
        id="scrollTheshold"
        lower-threshold="100"
        on-lower-threshold="_loadMoreData"
        scroll-target="[[scrollTarget]]">      
    </iron-scroll-threshold>    
  </template>

  <script>
    Polymer({

      is: 'my-iron-list',

      properties: {
        page: {
            type : Number,
            value : 0
        },
        perPage: {
            type : Number,
            value : 100
        },
        scrollTarget: HTMLElement,
      },

      _pushPage: function() {
          for (i = 0; i < this.perPage; i++) {
            this.$.list.push('items', 'Entry number ' + (i+1+this.page*this.perPage));   
          }
      },

      _loadMoreData: function() {
          this._pushPage();
          this.page = this.page + 1;
          this.$.scrollTheshold.clearTriggers();
      }
    });
  </script>
</dom-module>

这会导致您的变量for(int i = 0, n = strlen(name); n < i; i++); i在您预期的循环体中未声明

答案 1 :(得分:1)

原因是;结尾:

//...
for(int i = 0, n = strlen(name); n < i; i++)
//...

答案 2 :(得分:1)

class ImportExportError(Exception):
    """A generic exception for all others to extend."""
    pass


class FieldError(ImportExportError):
    """Raised when a field encounters an error."""
    pass 

您不能在 for(int i = 0, n = strlen(name); n < i; i++); - 循环声明的末尾放置一个分号。 for是一个有效的语句,因为当对循环体(和;语句)使用单语句时,C / C ++允许省略花括号{},这意味着你有一个空身的for循环!这样做:

if

另一个提示:在 for(int i = 0, n = strlen(name); n < i; i++) 循环之外定义变量,只需在for语句中初始化计数器。

for