Я хочу разделить входной массив на три разных на основе /
в качестве разделителя.
Я попробовал (возможно, наивный) подход сохранения входной строки в разных массивах, используяgetchar
и while
для чтения символов в массиве и использования счетчика для подсчета того, сколько раз появляется /
.
Исходя из этого числа, я бы использовал:
if (slashcounter == 0) {
destinationarray[i++] = c;
}
, чтобы сохранить его в соответствующем массиве.полная реализация приведена ниже.
обратите внимание, что я пытаюсь сделать это, используя только stdio.h
#include <stdio.h>
char c;
char replace[80], toBeReplaced[80], input[80], testInput[80];
int i = 0;
int slashcounter = 0;
int main(){
puts("Enter a line of text: ");
while (( c = getchar()) != '\n'){
if (c == '/') {
slashcounter++;
}
if (slashcounter == 0) {
replace[i++] = c;
}
else if (slashcounter == 1) {
toBeReplaced[i++] = c;
}
else if (slashcounter == 2) {
input[i++] = c;
}
}
//debug purpose
puts("The arrays have the following content\n");
puts("replace[]:\n");
puts(replace);
puts("\n");
puts("toBeReplaced[]:\n");
puts(toBeReplaced);
puts("\n");
puts("input[]:\n");
puts(input);
printf("Slashcounter = %d\n",slashcounter);
return 0;
К сожалению, происходит следующее: первое слово, то есть слово перед первой косой чертой,хранится правильно, но остальные два пусты.
Что я сделал не так здесь
токовый выход с входом this/test/fails
Enter a line of text:
this/test/fails
The arrays have the following content
replace[]:
this
toBeReplaced[]:
input[]:
Slashcounter = 2
Program ended with exit code: 0
пс. Я также хотел бы убедиться, что /
сотсутствует в выходном массиве.
Спасибо за помощь.