字符串中的某个位置

时间:2016-12-29 17:34:28

标签: c arrays loops for-loop scanf

import program from 'commander';

describe('test', function() {
  before(function() {
    new program.Command();
    program.Command.prototype._alias = 'testAlias';
    program.Command.prototype._name = 'testName';
    program.Command.prototype._description = 'testDescription';
  });

  it('first test', function() {
    console.log(program);
  });
});

我有这段代码。

我想,如果我输入

  

22s33

打印

  

好传

其他

  

传球错误

如何验证#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #include <math.h> int main() { char password[10]; int i; int contor=0; printf("introdu parola "); scanf("%c",&password); for(i=0;i>=10;i++) { if (isalpha(password[1])) contor=1; } if(contor=1) {printf("good pass");} else {printf("bad pass");} return 0; } 数组中的某个位置?上面的方法似乎不起作用。有人能解释我为什么我的逻辑错误吗? //编辑:我已经纠正过了。看起来效果很好。谢谢你们。

1 个答案:

答案 0 :(得分:4)

您有多个问题,其中一些是基本概念。建议重新阅读C书。

提供一些提示,

  1. scanf("%c",&password);应为scanf("%9s",&password);

    详细信息: %c读取并存储单个char,对于字符串,您需要%s9用于表示最大字段宽度,以避免缓冲区溢出超出预期的输入。

  2. for(i=0;i>=10;i++)应为for(i=0; i<10; i++),并非完全要求。

    详细信息:使用调试器和逐步执行检查i的值。此外,如果您正在寻找特定的索引,为什么要循环呢?

  3. if(contor=1)应为if(contor == 1)

    详细信息: =是赋值运算符,而您需要的是比较==运算符。

  4. 编辑:OP更新,

    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    #include <math.h>
    
    int main() {
    
     char password[10];
     int i;
     int contor=0;
    
     printf("introdu parola ");
     scanf("%s",&password);
    
     for(i=0;i<10;i++) {
       if (isalpha(password[1])) contor=1; 
     }
    
     if(contor==1) {
       printf("good pass");
     } 
     else {
       printf("bad pass");
     } 
    
     return 0; 
    } 
    

    评论:这样做更好,但仍需要改进。

    • scanf("%s",&password);最好是scanf("%9s",password);
    • for(i=0;i<10;i++) { if (isalpha(password[1])) contor=1; }没有意义,你从来没有在循环中有意义地使用i。如果您只想检查第二个(或第三个?)元素,可以跳过循环并直接写入

      if (isalpha(password[1]) {
           /*print good password*/
      } 
      else {
           /* print bad password*/
      }