因此,在我要尝试执行的下面的代码中,是在subArr
中找到arr
。但是正如您所看到的,我无法正确使用for
循环,因此我可以开始进行比较。
在各自位置访问该数组元素的每个字符(例如,位置cream
处的0
)时,我应该以什么为满足条件?
然后将其与subArr
逐个字符地进行比较,以查看subArr
中是否存在arr
我的最终目标是找出subArr
中是否存在arr
。如果是,则为return 1
,否则为return 0
我不要使用strstr()
。
int myStrStr (char * arr, char * subArr, char * buffer) {
// printf("%s\n", arr);
// printf("%s\n", subArr);
// printf("%s", buffer = subArr);
int count = 0;
for(int i = 0; arr[i] != '\0'; i++) {
//for(int j = 0; needle[j] != '\0'; j++) {
if(arr[i] == subArr[i]) {
buffer[count] = arr[i];
count++;
printf("Array: %c\n", arr[i]);
printf("SubArray: %c\n", subArr[j]);
//printf("%s", buffer = subArr);
//}
}
//printf("\nBuffer: %s\n",buffer);
int result = strcmp(buffer, needle);
if(result == 0) {
return 1;
} else {
return 0;
}
}
int main() {
char arr[][10] = {"cream","factory","camel","crosses","eating","cake"};
char subArr[][10] = {"cream","at","am","cross","in","kk"};
char buffer[160];
int answer1 = myStrStr(arr[0],subArr[0], buffer);
int answer2 = myStrStr(arr[1],subArr[1], buffer);
int answer3 = myStrStr(arr[2],subArr[2], buffer);
return 0;
}
最佳答案
这是一个简单的(粗略的)示例,以澄清这些问题:
#include<stdio.h>
int num; //SECOND DIMENSION OF THE 2D ARRAY
void fun(char c[][num])
{
for(int i=0;c[i][0]!='\0';++i)
printf("%s\n",c[i]); //c[i] MEANS STRING AT Ith INDEX, C[2] = "XYZ"
}
int main(void)
{
char c[][10]={"hello","world","xyz"};
num = sizeof(c[0]); //NO. OS SEPARATE STRINGS POSSIBLE
fun(c);
return 0;
}
输出:
hello
world
xyz
在函数
fun
中,当我们说c[i]
时,我们正在访问第ith个索引处的字符串,上面示例中的示例c[1]
是world
-现在,如果您要比较两个数组数组的元素,则可以访问每个字符串按索引进行索引并使用strcmp
,例如:strcmp(subArr[j],arr[i])
subArr[0]
和arr[0]
都相同,即问题中的cream
,因此当我们使用strcmp
时,它将返回0,表示subArr[0]
和arr[0]
相同。