169 похожих чатов

Драсьте #Include <stdio.h> #include <string.h> const int buffSize = 256; int main () {

printf("Type something:\n");
char str[buffSize];
fgets(str, buffSize, stdin);
char key[] = " .,?=+";

char* word = strtok(str, key);
while (word != NULL) {
puts(word);
word = strtok(NULL, key);
}
return 0;
}

поясните недалёкому, почему этот код функционирует шедврально, а этот

#include <stdio.h>
#include <string.h>

const int buffSize = 256;
const char key[] = " .,;\t\n";

int palindrom(char* word) {
int len = strlen(word);
int len_ = len / 2;
int res = 1;
for (int i = 0; i < len_; i++) {
if (word[i] != word[len - 1 - i]) {
res = 0;
break;
}
}

return res;
}

void wordRepeat(char* initWord, char* str) {
char tmp_str[buffSize];
strcpy(tmp_str, str);


char* word = strtok(tmp_str, key);
int counter = 0;
while (word != NULL) {
if (strstr(word, initWord) != NULL) {
counter++;
}
word = strtok(NULL, key);
}
printf("The word '%s' repeats\t\t%d times!\n", initWord, counter);
}

void deleteRepeatsAndCopy(char* word) {

}

void doAlphabeticOrder(char* word) {

}

int main () {
printf("Type something:\n");
char str[buffSize];
fgets(str, buffSize, stdin);

char str_buf[buffSize];
strncpy(str_buf, str, buffSize);

char* word = strtok(str_buf, key);
int pal_counter = 0;
while (word != NULL) {
pal_counter += palindrom(word);
wordRepeat(word, str);
word = strtok(NULL, key);
}
printf("The string has\t\t\t%d palindromes!\n", pal_counter);
return 0;
}

не хочет?

я подебажил и обнаружил, что когда выполняется строка word = strtok(NULL, key); то word имеет мусор какой-то, буд-то оно ломает кодировку у следующего токена или что, и вместо, к примеру, word = " ma" получается word = "\033@(��\177" (эта фигня в цикле получается)

2 ответов

35 просмотров

А какие символы поступают на вход, какой алфавит?

Denis- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта