我正在尝试在 C 中逐个字符地读取字符串。由于没有字符串类,因此没有函数可以帮助解决这个问题。这就是我想做的:我有,
char m[80]; //I do some concenation, finally m is:
m= 12;256;2;
现在,我想计算半列之间有多少个字符。在这个例子中,分别有 2,4 和 1 个字符。怎么能做到这一点?
谢谢
你是什么意思“没有功能可以帮助这个”?有。如果要读取字符串,请查看函数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 );
}
如果您不介意修改字符串,那么最简单的方法是使用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));
}
好吧,我不确定是否应该在这里为您编写代码,只是更正它。但...
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++;
}
}
这将存储;
数组中每个字符的数量。我承认这有点草率,但它会满足你的要求。