Я пытаюсь написать калькулятор командной строки, и я столкнулся с проблемой в функции, которую я написал, чтобы разбить строку на несколько меньших строк чисел и операторов.
Это функция (main предназначена только для проверки).
#include<string.h>
#include<stdio.h>
#define MAXNUMLEN 100
void splitter(char *str, char splitted[][MAXNUMLEN]) {
int next_op = 0;
int last_op = 0;
int next_free = 0;
while(strlen(str) - last_op > 1) {
for(next_op;
*(str+next_op) != '+'
&& *(str+next_op) != '-'
&& *(str+next_op) != '*'
&& *(str+next_op) != '/';
++next_op)
;
for(int i = last_op; i < next_op; ++i)
splitted[next_free][i] = *(str+i);
splitted[next_free][next_op] = '\0';
++next_free;
last_op = next_op;
++next_op;
}
}
int main() {
char temp[] = "1+1";
char c[4][MAXNUMLEN];
splitter(temp, c);
printf(c[0]);
printf(c[1]);
printf(c[2]);
printf(c[3]);
}
Я сталкиваюсь с ошибкой сегментации в строке
splitted[next_free][i] = *(str+i);
Однако * (str + i) всегда должен быть доступен, так как i никогда не превышает длину строки.