0

我正在尝试在 C 中逐个字符地读取字符串。由于没有字符串类,因此没有函数可以帮助解决这个问题。这就是我想做的:我有,

char m[80];  //I do some concenation, finally m is:

m= 12;256;2;

现在,我想计算半列之间有多少个字符。在这个例子中,分别有 2,4 和 1 个字符。怎么能做到这一点?

谢谢

4

3 回答 3

2

你是什​​么意思“没有功能可以帮助这个”?有。如果要读取字符串,请查看函数fgets

关于手头的问题,假设你有这个:

char m[80] = "12;256;2";

你想计算分号之间的字符。最简单的方法是使用strchr.

char *p = m;
char *pend = m + strlen(m);
char *plast;
int count;

while( p != NULL ) {
    plast = p;
    p = strchr(p, ';');

    if( p != NULL ) {
        // Found a semi-colon.  Count characters and advance to next char.
        count = p - plast;
        p++;
    } else {
        // Found no semi-colon.  Count characters to the end of the string.
        count = pend - p;
    }

    printf( "Number of characters: %d\n", count );
}
于 2013-04-10T23:13:33.247 回答
1

如果您不介意修改字符串,那么最简单的方法是使用strtok.

#include <string.h>
#include <stdio.h>
int main(void) {
    char m[80] = "12;256;2;";
    char *p;

    for (p = strtok(m, ";"); p; p = strtok(NULL, ";"))
        printf("%s = %u\n", p, strlen(p));
}
于 2013-04-10T23:33:37.493 回答
1

好吧,我不确定是否应该在这里为您编写代码,只是更正它。但...

int strcount, charcount = 0, numcharcount = 0, num_char[10] = 0;  
                                            //10 or how many segments you expect

for (strcount = 0; m[strcount] != '\0'; strcount++) {

    if (m[strcount] == ';') {

         num_char[numcharcount++] = charcount;
         charcount = 0;             

    } else {

         charcount++;

    }

}

这将存储;数组中每个字符的数量。我承认这有点草率,但它会满足你的要求。

于 2013-04-10T23:14:31.630 回答