C/C++
Задача на языке C.
Необходимо написать программу. "В пpоизвольном тексте вставить между втоpым и тpетьим словом новое слово". На языке C. Не могу понять что нужно делать.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void Error(char *word)
{
printf("\nNot finded %s word!", word);
exit(0);
}
int main()
{
char
text[512]={0},
addword[25]={0},
*buf;
int pos=-1;
printf("Enter your text:\n");
fgets(text,sizeof(text),stdin);
text[strlen(text)-1] = '\0';
printf("\nEnter adding word: ");
scanf("%s", &addword);
buf=(char*)malloc((strlen(text)+strlen(addword)+2)*sizeof(char));
if(!buf) exit(1);
memset(buf,'\0', strlen(buf));
strcpy(buf, text);
char *word=strtok(text, " ,.;:!?");
if(!word) Error("first");
word=strtok(NULL, " ,.;:!?");
if(!word) Error("second");
word=strtok(NULL, " ,.;:!?");
if(!word) Error("third");
memset(text,'\0',sizeof(text));
strcpy(text, buf);
pos = strlen(strstr(text,word));
memset(buf,'\0',strlen(buf));
strncpy(buf,text,
strlen(text)-pos);
strcat(buf,addword);
strcat(buf," ");
strcat(buf,word);
memset(text,'\0',sizeof(text));
strcpy(text,buf);
free(buf);
printf("\nResult:\n%s", text);
system("pause"); //для Windows
return 0;
}
#include<stdlib.h>
#include<string.h>
void Error(char *word)
{
printf("\nNot finded %s word!", word);
exit(0);
}
int main()
{
char
text[512]={0},
addword[25]={0},
*buf;
int pos=-1;
printf("Enter your text:\n");
fgets(text,sizeof(text),stdin);
text[strlen(text)-1] = '\0';
printf("\nEnter adding word: ");
scanf("%s", &addword);
buf=(char*)malloc((strlen(text)+strlen(addword)+2)*sizeof(char));
if(!buf) exit(1);
memset(buf,'\0', strlen(buf));
strcpy(buf, text);
char *word=strtok(text, " ,.;:!?");
if(!word) Error("first");
word=strtok(NULL, " ,.;:!?");
if(!word) Error("second");
word=strtok(NULL, " ,.;:!?");
if(!word) Error("third");
memset(text,'\0',sizeof(text));
strcpy(text, buf);
pos = strlen(strstr(text,word));
memset(buf,'\0',strlen(buf));
strncpy(buf,text,
strlen(text)-pos);
strcat(buf,addword);
strcat(buf," ");
strcat(buf,word);
memset(text,'\0',sizeof(text));
strcpy(text,buf);
free(buf);
printf("\nResult:\n%s", text);
system("pause"); //для Windows
return 0;
}

Алексей Несветаев
Спасибо большое. Благодарен от всей души.
создаешь новый массив символов достаточной длины (newstr)
находишь позицию второго пробела (pos)
копируешь в новый массив отрезок старого длиной до этого пробела с помощью strncat;
добавляешь в новый массив заданное слово с помощью strcat;
добавляешь в него дополнительный пробел так же;
добавляешь в новый массив остаток старого (oldstr+pos+1) с помощью strcat
находишь позицию второго пробела (pos)
копируешь в новый массив отрезок старого длиной до этого пробела с помощью strncat;
добавляешь в новый массив заданное слово с помощью strcat;
добавляешь в него дополнительный пробел так же;
добавляешь в новый массив остаток старого (oldstr+pos+1) с помощью strcat
Не понимаешь, что нужно сделать? Ну записывай, значит:
1. Дается предложение. Например:
3. Считываешь новое слово, пусть будет:
1. Дается предложение. Например:
My friends Anton, Valera, Grisha - are really great guys
2. Разбиваешь его на слова и ищешь второе и третье. В данном случае это слова: friends
Anton
соответственно.3. Считываешь новое слово, пусть будет:
Maxim
4. Вставляешь его между теми двумя и выводишь получившуюся строку: My friends Maxim, Anton, Valera, Grisha - are really great guys
Читаете строку, ищете пробел, отсчитываете, отрезаете, копируете, вставляете.
Похожие вопросы
- Задача на языке C++
- Решить задачу на языке C (НЕ С++!!!)
- Задача по программированию C++
- Задача на языке программирования C++
- Помогите решить задачу пожалуйста, в C++
- Чем лучше язык С языка C++?
- Задача на языке программирования C#
- Задача на языке программирования C++
- Задача по языку программированию C++
- Задача на сортировку структур. Язык C++.