计算C中字符串数组中的字符数

har*_*ger 1 c arrays

我试图计算总字符数,不包括空格,(我相信)是一个指向字符串数组的指针,称为myArray.

我正在努力找出问题所在.任何帮助将非常感激!

char *myArray[1000] = {"Oh! ", "Hello ", "world."};

int count = 0, x;

for (x = 1; x <= 1000; ++x) {
    count += strlen(myArray[x]);
}

printf(count);
Run Code Online (Sandbox Code Playgroud)

期望的输出:

14
Run Code Online (Sandbox Code Playgroud)

usr*_*usr 6

Yuu可以使用标准函数ctype.h来识别字符类.例如,使用issspace()您可以查找字符是否为空格,如果是,则可以忽略它.

您正在循环索引从1到1000. C中的索引从0开始并上升到N-1.此外,你只包含3个指针; rest只是NULL(隐式零初始化).

另一个问题是您在count没有格式说明符的情况下进行打印.count存在int,你需要使用%d格式说明符.但是,您可以使用size_t类型字符串函数返回和可以容纳最大对象的类型.

#include <stdio.h>
#include <ctype.h>

int main(void)
{

char *myArray[] = {"Oh! ", "Hello ", "world."};

size_t count = 0, x, y;

for (x = 0; x < sizeof(myArray)/sizeof(myArray[0]); x++) {
    for (y = 0; myArray[x][y]; y++) {
        count += (isspace((unsigned char)myArray[x][y]) == 0);
    }
}

printf("Total chars: %zu\n", count);
}
Run Code Online (Sandbox Code Playgroud)