给定数组中有多少个字符,但有空格

时间:2018-12-30 05:58:04

标签: c arrays if-statement continue

我试图找出给定数组中除空格外有多少个字符 但它不起作用,k应该计算空格并从i [字符+空格]中减去它们,但没有成功。

let arrayNotEmpty = not { (array: [Int]) in array.isEmpty }
arrayNotEmpty([1, 3, 5]) // true

1 个答案:

答案 0 :(得分:0)

这里很少观察

fgets(c ,256, stdin);

fgets()\n存储在缓冲区的末尾(如果已读取)。在fgets()的手册页中

  

如果读取了newline,则会将其存储到缓冲区。          终止空字节('\0')存储在的最后一个字符之后          缓冲区

先删除结尾的\n,然后对其进行迭代。对于例如

fgets(c, sizeof(c), stdin);
c[strcspn(c, "\n")] = 0; /* remove the trailing \n */ 

这里也不需要使用continue,即,您无需使用它就可以完成任务。对于例如

int main(void) {
        int i= 0;
        int k= 0;
        char c[256] = ""; /* fill whole array with 0 */
        fgets(c, sizeof(c), stdin);
        c[strcspn(c, "\n")] = 0; /* remove the trailing \n */
        while(c[i] != '\0' ){ /* or just c[i] */
                if(c[i] == ' ') {
                        k++; /* when cond is true, increment cout */
                }
                i++; /* keep it outside i.e spaces or not spaces 
                        this should increment  */
        }
        printf("spaces [%d] without spaces [%d]\n",k,i-k);
        return 0;

}