2014-03-13 176 views
0

此代码的用途是计算输入字符串中输入字符的使用次数。计算字符串中的字符

代码是这样的它给出错误输出K = 41由于数据类型范围有限,警告比较总是错误的。

int main() 
{ 
    int i,k,x=0; 
    char ch; 
    char str[1000]; 
    printf("Write your Word!\n"); 
    gets(str); 
    printf("Write character to Search\n"); 
    scanf("%c",&ch); 
    x=strlen(str); 
    printf("%d",x); 
    printf("%d",k); 
      for(i=0;i!=x-1;i++){ 
      if(str[i]=='ch'){ 

       k++; }   
       }   
    printf("%d times used",k); 
    getch(); 

return 0; 


    } 
+2

'k'将不会被初始化 – tesseract

+2

比较警告是因为'STR [1] =='ch''; 'str [i]'是一个字符,你*与2个字符*进行比较。 – pmg

+0

你未初始化的意思是什么?我应该在哪里发起k?如果循环? – user1944312

回答

0

的一些问题:你没有初始化k和比较应该与可变ch,而不是持续'ch'。这应该工作(注意,我也改变了你的printf S表示干净的输出):

int main() 
{ 
    int i,k=0,x=0; 
    char ch; 
    char str[1000]; 
    printf("Write your Word!\n"); 
    gets(str); 
    printf("Write character to Search\n"); 
    scanf("%c",&ch); 
    x=strlen(str); 
    printf("strlen = %d\n",x); 
    for(i=0;i!=x-1;i++){ 
     if(str[i]==ch){ 
      k++; }    
     }     
    printf("%d times used\n",k); 
    getch(); 
    return 0; 

} 
+1

''ch''不是一个字符串(也就是'“ch”');它是一个多字符'int'常量。 – pmg

+2

为了完美,'gets()'不应该在那里。它不会伤害使用'fgets()'来代替。 'gets()'是旧的,它很臭,并且应该从不**被使用。它甚至从C11中删除。 –

+0

@pmg我的错误,我更正了答案 – trogdor