вращение струн - PullRequest
       1

вращение струн

1 голос
/ 17 августа 2010
#include <stdio.h>
#include <string.h>
int main()
{
    char s[15];
    int i,j,n,*str;

    printf("Enter a string");
    scanf("%s",str);
    n=strlen(str);

    for(i=0;i<n;i++)
    {
        str[n]=str[0];

        for(j=0;j<n;j++)
        {
            str[j]=str[j+1];
        }
        str[n]='\0';
        printf("\n %s",str);
    }
    return 0;
}

эта программа дает мне все возможные повороты строки

может кто-нибудь объяснить str[n]=str[0] и str[j]=str[j+1] значение вместо n=strlen(s) мы можем использовать n=strlen(str) Пожалуйста, объясните

Ответы [ 3 ]

3 голосов
/ 17 августа 2010

Это вращает строку. Это делается путем перемещения первого символа в последнее место с помощью команды str[n] = str[0] (str[n] - завершающий строку нулевой символ '\0', затем смещение всей строки на единицу (str[j] = str[j+1]), затем замена ноль в конце (str[n]='\0').

Этот код, если бы он использовал s, вызвал бы переполнение буфера, если строка длиннее 14 символов. Однако в коде также есть логическая ошибка: он должен либо инициализировать str (как char*, а не int*), либо сканировать в s с ограниченной длиной. Например:

scanf("%14s", s);

или

str = (char*)malloc(500);
scanf("%500s", str);
0 голосов
/ 05 марта 2014
#include <stdio.h>
#include <string.h>
int main()
{
    char s[15];
    char tmp_var;
    int i,j,n,*str;

    printf("Enter a string");
    scanf("%s",str);
    n=strlen(str);

    for(i=0;i<n/2;i++)
    {
        tmp_var  = str[i];
        str[i]   = str[n-i];
        str[n-i] = tmp_var;
    }
    printf("\n Rotated String is %s \n",str);
    return 0;
}
0 голосов
/ 17 августа 2010

вместо взятия n=strlen(s) мы можем использовать n=strlen(str)

На самом деле, поскольку str является int -показателем, который нигде не инициализирован, все случаи использования str должны быть заменены на s (возможно, это просто опечатка).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...