问题:c语言简单的循环和字符串,错在哪里了?结果怎么是0(已解决)
生活随笔
收集整理的這篇文章主要介紹了
问题:c语言简单的循环和字符串,错在哪里了?结果怎么是0(已解决)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
函數功能:統計字符串中空格的個數.?
#include <stdio.h> #include <string.h> int count_spaces(char *p,int n) { int i = 0; int count = 0; while((*p != '\0') && ((*p == ' ')?(++ count):(count))){if(*p == ' ')printf("yes");printf("%d 's value is:%c",i,*p);++ p;} return count;} #define LEN 100 int main() { char p[LEN + 1] = "ad sd sdfa sa "; int n = count_spaces(p,sizeof(p) / sizeof(p[0])); printf("%d\n",n);return 0; }上述錯誤在于:當while的條件為假一次,那么while就徹底停止了,也就是當條件表達式的返回值為假一次,那么while將會停止。鬼知道條件表達式返回個什么東西。
更改后:
#include <stdio.h> #include <string.h> int count_spaces(char *p,int n) { int count = 0;while(*p != '\0'){if(*p == ' ') ++ count;++ p;} return count;} #define LEN 100 int main() { char p[LEN + 1] = "ad sd sdfa sa "; int n = count_spaces(p,sizeof(p) / sizeof(p[0])); printf("%d\n",n);return 0; } ~運行結果:5
方法2:
#include <stdio.h> #include <string.h> int count_spaces(char *p,int n) { int count = 0,i = 0;while(p[i] != '\0'){if(p[i] == ' ') ++ count;++ i;} return count;} #define LEN 100 int main() { char p[LEN + 1] = "ad sd sdfa sa "; int n = count_spaces(p,sizeof(p) / sizeof(p[0])); printf("%d\n",n);return 0; } ~運行結果:5
方法3:
#include <stdio.h> #include <string.h> int count_spaces(char *p,int n) { int count = 0;while(*p){ if(*p == ' ') count ++;++p;} return count;} #define LEN 100 int main() { char p[LEN + 1] = "ad sd sdfa sa "; int n = count_spaces(p,sizeof(p) / sizeof(p[0])); printf("%d\n",n);return 0; } ~運行結果:5? ?
總結
以上是生活随笔為你收集整理的问题:c语言简单的循环和字符串,错在哪里了?结果怎么是0(已解决)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ primer 5th,练习11.
- 下一篇: xhtml中的五个块元素