遍历';C中数组的s
我有这样一个代码:遍历';C中数组的s,c,arrays,string,loops,character,C,Arrays,String,Loops,Character,我有这样一个代码: char* s[4][10] = { "abc\0", "aab\0", "cbb\0" }; a要键入一个字符,如..'a',并遍历字符串数组,检查每个字符串上是否有“a”,然后计算有多少个 在这种情况下,我想要得到的是“abc”:1,“aab”:2,“cbb”:0。。。 如何执行循环以获得此结果?char input='\0'; char input = '\0'; scanf("%c", &input); int i, j; for(i=0; i<4;
char* s[4][10] = { "abc\0", "aab\0", "cbb\0" };
a要键入一个字符,如..'a',并遍历字符串数组,检查每个字符串上是否有“a”,然后计算有多少个
在这种情况下,我想要得到的是“abc”:1
,“aab”:2
,“cbb”:0
。。。
如何执行循环以获得此结果?char input='\0';
char input = '\0';
scanf("%c", &input);
int i, j;
for(i=0; i<4; i++)
{
int count = 0;
for(j=0;j<10;j++)
{
if(s[i][j] == input) count++;
}
printf("%s : %d", s[i], count);
}
scanf(“%c”,&input);
int i,j;
对于(i=0;i,这里有一个演示程序,演示如何处理不同的数组声明
#include <stdio.h>
int main(void)
{
char* s[4][10] = { { "abc", "aab", "cbb" } };
for ( int i = 0; i < 4; i++ )
{
for ( int j = 0; j < 10; j++ )
{
if ( s[i][j] )
{
size_t count = 0;
for ( char *p = s[i][j]; *p != '\0'; ++p )
{
if ( *p == 'a' ) ++count;
}
printf( "\"%s\": %zu\n", s[i][j], count );
}
}
}
printf( "\n" );
char* t[4] = { "abc", "aab", "cbb" };
for ( char **p = t; *p != NULL; ++p )
{
size_t count = 0;
for ( char *q = *p; *q != '\0'; ++q )
{
if ( *q == 'a' ) ++count;
}
printf( "\"%s\": %zu\n", *p, count );
}
printf( "\n" );
char u[4][10] = { "abc", "aab", "cbb" };
for ( int i = 0; i < 4; i++ )
{
if ( u[i][0] != '\0' )
{
size_t count = 0;
for ( char *p = u[i]; *p != '\0'; ++p )
{
if ( *p == 'a' ) ++count;
}
printf( "\"%s\": %zu\n", u[i], count );
}
}
return 0;
}
您的意思似乎是数组声明的第二个变量或数组声明的第三个变量。第一个变量看起来很奇怪。:)
考虑到字符串文本已经包含终止零。比如说,写作是没有意义的
"abc\0"
写得简单就足够了
"abc"
由于端接零的存在,sizeof(“abc”)
等于4
#include <stddef.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
char s[10][4] = { "abc", "aab", "cbb" };
size_t i;
for (i = 0; i != sizeof(s) / sizeof(s[0]); i++) {
fprintf(stdout, "%zu: %s\n", i, s[i]);
}
return 0;
}
有几个错误:
char*
而不是char
[4][10]
而不是[10][4]
“abc\0”
而不是“abc”
(后面的“\0”
是隐式的)
您的代码有什么问题,id没有找到a
?而且您不需要“\0”
它是隐含的。stackoverflow!=帮我做家务。请发布您的尝试,并描述您遇到的任何特定问题,也许有人能够帮助您。Alvaro,去掉字符串文字中的显式空值-字符串文字有隐式空值,因此“abc\0”有五个字符长。我只是想告诉您,我没有要求做家庭作业,只是解决一些我根本无法提供答案的问题?这就鼓励了这类问题。这个问题相当简单,所以我想不会有太大的伤害,虽然原则上你是对的。
#include <stddef.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
char s[10][4] = { "abc", "aab", "cbb" };
size_t i;
for (i = 0; i != sizeof(s) / sizeof(s[0]); i++) {
fprintf(stdout, "%zu: %s\n", i, s[i]);
}
return 0;
}
#include <stddef.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
char *s[4] = { "abc", "aab", "cbb" };
size_t i;
for (i = 0; i != 3; i++) {
fprintf(stdout, "%zu: %s\n", i, s[i]);
}
return 0;
}
char* s[4][10] = { "abc\0", "aab\0", "cbb\0" };