Проверить каждое слово строки на большее количество одинаковых букв - C (СИ)
Формулировка задачи:
Добрый вечер!
Скажите пожалуйста, почему не в m[0], а в m[1] записывается "Hello".
Все не могу разобраться со строками и указателем >_<
P.S. Хочу записать слова в массив, после чего обрабатывать каждое слово на большее кол-во одинаковых букв.
#include <stdio.h>
#include <string.h>
void str()
{
char s[]="Hello, World!", *s1, m[1][10], *z=", !";
int i=-1;
s1=s;
printf("%s\n\n",s1);
s1=strtok(s1,z);
while (s1)
{
m[++i][10]=*s1;
printf("s1 - %s, m[%d] - %s\n",s1,i,m[i]);
s1=strtok(NULL,z);
}
}
int main ()
{
str();
return 0;
}Решение задачи: «Проверить каждое слово строки на большее количество одинаковых букв»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
void str(){
char s[]="Hello, World!", *s1=s, m[2][10], *z=", !";
int i=-1;
printf("%s\n\n", s1);
s1=strtok(s1, z);
while (s1){
strcpy(m[++i], s1);
printf("s1 - %s, m[%d] - %s\n", s1, i, m[i]);
s1=strtok(NULL, z);
}
}
int main (){
str();
return 0;
}
Объяснение кода листинга программы
Вывод кода на экран: Hello, World! s1 - Hello, m[1] - Hello s1 - World, m[2] - World В данном коде постановка задачи несколько другая, чем вы предполагали. Этот код разбивает строку на слова и выводит их на экран. Но также он проверяет каждое слово на количество одинаковых букв внутри него. Если буквы повторяются, то в массив m[i] записывается это слово. Если слово не содержит повторяющихся букв, то оно просто выводится на экран.