C/C++

Написать код на языке си

Написать код для 5функции
XR
Xara Rama
164
#include <stdio.h>

int strlen(char * s)
{
int i = 0;
while(*(s + i))
i++;
return i;
}

char * strncpy(char * s1, char * s2, int n)
{
int len1 = strlen(s1);
int len2 = strlen(s2);
int x;
if(n > len2)
{
for(x = 0; x < len2 + 1; x++)
*(s1 + x) = *(s2 +x);
}
else if(n > len1)
{
for(x = 0; x < n; x++)
*(s1 + x) = *(s2 + x);
*(s1 + x) = '\0';
}
else
{
for(x = 0; x < n; x++)
*(s1 + x) = *(s2 + x);
}
return s1;
}

int main()
{
const int size = 100;
char s1[size],s2[size];
printf("Введите строку 1: ");
scanf("%s", s1);
printf("Введите строку 2: ");
scanf("%s", s2);
int n;
printf("Введите число символов n: ");
scanf("%d", &n);
printf("%s\n", strncpy(s1,s2,n));

return 0;
}
Станислав Цайзер
Станислав Цайзер
57 311
Лучший ответ
Оганнес Саргсян Там условия не все. Если s1<s2 ЧТО ДЕЛАТЬ и ЧТО ВОЗВРАЩАТЬ?
Xara Rama Можете прокомментировать код, а то не некоторых местах не очень понятно
Xara Rama Спасибо
8.

#include <stdio.h>
char* chrinstr(char* s, char c) {
char* begin = s;
while (*begin) {
if (*begin == c) break;
++begin;
}
return begin;
}
int main(void) {
char hello[] = "Hello world!";
char a = 'a';
char o = 'o';
char* p = NULL;
p = chrinstr(hello, a);
puts(*p ? "a yes" : "a no");
p = chrinstr(hello, o);
puts(*p ? "o yes" : "o no");
return 0;
}
Можно написать решение вообще без библиотеки string.h, так:

#include<stdio.h>
int len(char *str)
{
int count=0;
while(*str) {str++;count++;}

return count;
}

char * strNcpy(char *str1, char *str2, int n)
{
for(int i = 0; i < n; i++)
str1[i] = str2[i];
return str1;
}
int main()
{
char str1[512]={0},str2[256]={0};
printf("Enter your string1 or button \"Enter\":\n");
fgets(str1,sizeof(str1),stdin);

printf("\nEnter your string2:\n");
fgets(str2,sizeof(str2),stdin);
printf("\nResult:\n%s",
strNcpy(str1,str2,len(str2)-1));
return 0;
}
ЮБ
Юра Буслаев
37 945