В настоящее время у меня проблемы с передачей массивов символов из моей основной функции в некоторую функцию, которая подсчитывает количество элементов в моем массиве.
Я прошу 2 отдельных строковых символа, используя функцию getchar().
Чтобы уточнить, вот фрагмент моего кода:
Я пробовал использовать scanf для &myArray[0] в качестве альтернативы ‹-- это нормально? Учитывая, что пользователь вводит, например, 5 символов, будет ли программа автоматически увеличиваться до &myArray[++] для каждого последующего символа?
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_LEN 20
int match(char s[], char t[] )
{
int i = 0;
int j = 0;
printf("begin: ivaL: %d, jval: %d\n", i, j);
while(s[i] != '\0')
i++;
while(t[j] != '\0')
j++;
printf("i val: %d, jval: %d ", i, j); /*J value is messed up, it prints 20+ when ive only typed 5 characters or so*/
}
int main()
{
int cur = 0;
char char1[ARRAY_LEN];
char char2[ARRAY_LEN];
char c;
char f;
printf("Enter char: ");
while((c=getchar())!=EOF && c!='\n')
{
char1[cur++] = c;
}
cur = 0;
printf("\n2nd Char: ");
while((f=getchar())!=EOF && f!='\n')
{
char2[cur++] = f;
putchar(f);
}
putchar('\n')
printf("Cur value: %d\n", cur); //here cur accurately prints the correct number of while loops done when counting the characters
match(char1, char2); /*here i tried to fetch the number of elements in char2 before i passed it to match function and in here char2 is showing correct value, something happens when i pass char2 to the match function*/
}
c=getchar())!=EOF && c!='\n'
->(c=getchar())!='\n'
? - person sjsam   schedule 29.04.2019s[i] != '\0'
, если вы явно не сделалиchar1[cur]='\0'
сразу после первого цикла while. И аналогично для второго. - person sjsam   schedule 29.04.2019c
должен бытьint
. - person Antti Haapala   schedule 29.04.2019