コード例 #1
0
void str_reverse(char *str,int length,int pos){
	if((length%2)!=0){//odd length
		*(str+pos+((length-1)/2)) ^= *(str+((length-1)/2)-pos);//XOR swap
		*(str+((length-1)/2)-pos) ^= *(str+pos+((length-1)/2));
		*(str+pos+((length-1)/2)) ^= *(str+((length-1)/2)-pos);
		
		if(pos==((length-1)/2))
			return;
		str_reverse(str,length,pos+1);
	}else if(((length%2)==0)&&(pos==1)){
		*(str+(length/2)) ^= *(str+(length/2)-pos);
		*(str+(length/2)-pos) ^= *(str+(length/2));
		*(str+(length/2)) ^= *(str+(length/2)-pos);

		str_reverse(str,length,pos+1);
	}else{
		*(str+(length/2)-pos) ^= *(str+(length/2)+pos-1);
		*(str+(length/2)+pos-1) ^= *(str+(length/2)-pos);
		*(str+(length/2)-pos) ^= *(str+(length/2)+pos-1);

		if(pos==(length/2))
			return;
		str_reverse(str,length,pos+1);
	}
	return;
}
コード例 #2
0
int main() {
	char* line = console_read_line(100, 1000);
	str_reverse(line);
	printf("%s\n", line);
	free(line);
	return 0;
}
コード例 #3
0
char* get_encoding(symbol *h, int c){
  /*
    get_encoding() - given the root of a symbol table-tree and a character, 
    returns the encoding (i.e. the code) of that character as a char*
  */
  char *buf;
  buf = malloc(sizeof(char)*ENCODING_BUFFER_SIZE);
  int bufctr=0;
  
  symbol *s, *s_i;
  s=seek_symbol(h,c);
  if (!(s == NULL)){
    s_i=s;
    while(s_i->parent != NULL){    
      if (s_i->parent->left==s_i)
	buf[bufctr++]='0';
      else if (s_i->parent->right==s_i)      
	buf[bufctr++]='1';
      else 
	fprintf(stderr,"ERROR: unexpected error, weirdly orphaned node detected");    
      s_i=s_i->parent;
    }
  }
  buf[bufctr]='\0';  
  str_reverse(buf,bufctr);

  return buf;  
}
コード例 #4
0
ファイル: tw2.c プロジェクト: kernel-bz/linux-kernel-struct
//개인키 복호화
void _tw2_get_decode_key (char* skey, char* out_key, char* out_key_time, int cnt, int flag)
{
	char akey[ASIZE], *pkey;
	register int i, j;
	const int length = 60;	//키길이
	const int codec[] = { 0, 1, 0, 2, 5, 2, 0, 3, 3, 0, 7 }; //11개
	int k, asize = sizeof(codec) / sizeof(codec[0]);
	char *str[] = {"key  ", "phone", "email", "time "};

	while (cnt--) {
		pkey = akey;
		i = 0;
		while (*skey != 19 && i++ < ASIZE-2) *pkey++ = *skey++;
		*pkey = '\0';

		//복호화
		str_reverse (akey);
		for (i=0; i < (int)str_len (akey); i++) {
			k = i + asize;
			akey[i] += (k * (codec[i%asize])) % 33;
			akey[i] -= 20;
		}
		//akey[i] = '\0';
		if (flag) printf ("%s: %s\n", str[cnt], akey);
		if (cnt==0) str_copy (out_key, akey);
		if (cnt==3) str_copy (out_key_time, akey);

		//키길이(length)까지 채워진 랜덤문자
		for (j = i; j < length; j++) *skey++;
	}
}
コード例 #5
0
ファイル: tw2.c プロジェクト: kernel-bz/linux-kernel-struct
//개인키 암호화
int _tw2_getchar_encode_key (char* msg, char* akey, int flag)
{
	register int i=0, j;
	const int length = 60;	//키길이
	const int codec[] = { 0, 1, 0, 2, 5, 2, 0, 3, 3, 0, 7 }; //11개
	int c, k, asize = sizeof(codec) / sizeof(codec[0]);

	if (flag) {
		printf ("%s", msg);
		while ((c = getchar()) != (int)'\n' && i < length-2)
			akey[i++] = c;
		akey[i] = '\0';
	} else i = str_len (akey);

	//암호화
	for (j=0; j < i; j++) {
		k = j + asize;
		akey[j] -= (k * (codec[j%asize])) % 33;
		akey[j] += 20;
	}
	str_reverse (akey);
	akey[i] = 19;	//키의 끝

	//랜덤문자로 키길이(length)까지 채움
	time_rand_seed_init ();	
	for (j = i+1; j < length; j++)
		akey[j] = time_random_between (33, 126);	//출력가능한 아스키문자
	akey[j] = '\0';
	
	return i;	//입력받은 키의 길이
}
コード例 #6
0
ファイル: 1116.c プロジェクト: tioover/OJ
int main(int argc, const char *argv[])
{
    char buf[1000];
    scanf("%s", buf);
    str_reverse(buf);
    printf("%s", buf);
    return 0;
}
コード例 #7
0
ファイル: 1504.c プロジェクト: antonydeepak/POJ
int main()
{
  int i,n;
  scanf("%i", &n);

  for (i=0; i<n; i++) {
    setup();
    scanf("%s%s", str_a, str_b);
    str_reverse(str_a);
    str_reverse(str_b);

    sprintf(sum, "%i", atoi(str_a) + atoi(str_b));
    str_reverse(sum);

    printf("%i\n", atoi(sum));
    teardown();
  }
  return 0;
}
コード例 #8
0
int main(int argc, char* argv[]) {
  if (1 == argc) {
    printf("Please provide a string to reverse!\n");
    return 1;
  }

  printf("Reversed: \"%s\"\n", str_reverse(argv[1]));

  return 0;
}
コード例 #9
0
ファイル: reverse.c プロジェクト: e3mark/sample
int main()
{
    char input[100];

    printf("Enter some text\n");
    scanf("%s", input);

    printf("%s\n", str_reverse(input));

    return 0;
}
コード例 #10
0
int main(){
	char st[5];
	st[0]='h';
	st[1]='e';
	st[2]='l';
	st[3]='l';
	st[4]='o';
	char *ptr;
	ptr=st;
	str_reverse(ptr,5,1);
	int i;
	for(i=0;i<5;i++)
		printf("%c",*(ptr+i));
	return 0;
}
コード例 #11
0
//---------------------------------------------------------------------------
boolean safe_palindrome( const int dw_palindrome )
{
    int max_bits;
    bit_max( max_bits );
    //two buffers
    char forward_text[max_bits + 1];
    char reverse_text[max_bits + 1];

    //make into str representation
    int_to_str( forward_text , dw_palindrome );

    memcpy( (void*) reverse_text , forward_text , max_bits + 1 );

    //reverse string
    str_reverse( forward_text );

    //compare
    return compare_str( forward_text , reverse_text );

}
コード例 #12
0
ファイル: server.cpp プロジェクト: nickbodd/UWcs456Networking
int main() {
	//create tcp socket and establish a connection
    TCPServerSocket tcpServerSocket;

    int ret = tcpServerSocket.initialize();
    ASSERT(ret == 0);
    
    int serverUdpPort = tcpServerSocket.negotiate();
    ASSERT(serverUdpPort > 1024);

    tcpServerSocket.close();

    //open a udp socket and listen for str
    UDPSocket udpSocket;
    ret = udpSocket.open(serverUdpPort);
    ASSERT(ret == 0);
    LOG("Server opened UDP Port %i\n", serverUdpPort);

    char buf[1024];
    unsigned long remoteIp;
    int remotePort;
    
    //read, reverse string and send it back to client
	int readBytes = udpSocket.read(buf, 1024, remoteIp, remotePort);
	buf[readBytes] = '\0';
    ASSERT(readBytes > 0);
    LOG("Server Received: %s\n", buf);

    //Reverse the string and write to the buffer again
    str_reverse(buf);

    int writeBytes = udpSocket.write(remoteIp, remotePort, (const char *) buf, readBytes);
    ASSERT(writeBytes > 0);
    LOG("Server sent: %s\n", buf);

    udpSocket.close();

    return 0;
}
コード例 #13
0
ファイル: stringOperation.c プロジェクト: sqwang/SaiSolution
int main(int argc, char *argv[])
{
	char s1[100];
	char *s2;
	int len;
	printf("Input the string:\n");
	gets(s1);
	
	len = strlen(s1);

	s2 = malloc(len + 1);
	if (s2 == NULL) {
		printf(" Malloc error\n");
		return -1;
	}

	str_reverse(s1, s2);

	printf("Length: %d\n", len);
	printf("Words: %d\n", str_word_num(s1));
	printf("Reverse: %s\n", s2);
	return 0;
}
コード例 #14
0
ファイル: printk.c プロジェクト: sktwj/var
/* 数字转成字符串并直接输出到串口
 * @n: 被转换的目标数字
 * @base: 进制
 * @is_signed: 是否是有符号的类型
 * return: 转换成字符串后的字节数
 */
static size_t itoa(int n, size_t base, size_t is_signed)
{
	size_t count = 0;

	char *p = str;

	int SIGNED_FLG = UNSIGNED;

	//确定最终结果是否是负数
	if ((base == 10) && (is_signed) && (n < 0)) {
		SIGNED_FLG = SIGNED;
		n *= -1;
	}

	//排除n == 0的情况,因为0会导致下面的for循环直接退出
	if (!n) {
		*p++ = '0';
		count++;
	}

	for (; n; p++, n /= base, count++) {
		*p = tab[n % base];
	}

	if (SIGNED_FLG == SIGNED) {
		*p++ = '-';
		count++;
	}
	*p = '\0';

	str_reverse(str);

	print_str(str);

	return count;
}
コード例 #15
0
ファイル: 1007.cpp プロジェクト: nutmos/Code
int main() {
    char str[50];
    gets(str);
    str_reverse(str, 0);
}
コード例 #16
0
ファイル: 1007.cpp プロジェクト: nutmos/Code
void str_reverse(char str[], int mark) {
    if (str[mark] != '\0') {
        str_reverse(str, mark+1);
        printf("%c",str[mark]);
    }
}
コード例 #17
0
static int
parse_domain_list(FPST ** const domain_list_p,
                  FPST ** const domain_rev_list_p,
                  FPST ** const domain_substr_list_p,
                  const char * const file)
{
    char       buf[MAX_QNAME_LENGTH + 1U];
    char      *line;
    FILE      *fp;
    char      *ptr;
    FPST      *domain_list;
    FPST      *domain_list_tmp;
    FPST      *domain_rev_list;
    FPST      *domain_rev_list_tmp;
    FPST      *domain_substr_list;
    FPST      *domain_substr_list_tmp;
    size_t     line_len;
    BlockType  block_type = BLOCKTYPE_UNDEFINED;
    int        ret = -1;

    assert(domain_list_p != NULL);
    assert(domain_rev_list_p != NULL);
    assert(domain_substr_list_p != NULL);
    *domain_list_p = NULL;
    *domain_rev_list_p = NULL;
    *domain_substr_list_p = NULL;
    domain_list = fpst_new();
    domain_rev_list = fpst_new();
    domain_substr_list = fpst_new();
    if ((fp = fopen(file, "r")) == NULL) {
        return -1;
    }
    while (fgets(buf, (int) sizeof buf, fp) != NULL) {
        if ((line = trim_comments(untab(buf))) == NULL || *line == 0) {
            continue;
        }
        line_len = strlen(line);
        if (line[0] == '*' && line[line_len - 1] == '*') {
            line[line_len - 1] = 0;
            line++;
            block_type = BLOCKTYPE_SUBSTRING;
        } else if (line[line_len - 1] == '*') {
            line[line_len - 1] = 0;
            block_type = BLOCKTYPE_PREFIX;
        } else {
            if (line[0] == '*') {
                line++;
            }
            if (line[0] == '.') {
                line++;
            }
            str_reverse(line);
            block_type = BLOCKTYPE_SUFFIX;
        }
        if (*line == 0) {
            continue;
        }
        str_tolower(line);
        if ((line = strdup(line)) == NULL) {
            break;
        }
        if (block_type == BLOCKTYPE_SUFFIX) {
            if ((domain_rev_list_tmp = fpst_insert_str(domain_rev_list, line,
                                                       (uint32_t) block_type)) == NULL) {
                free(line);
                break;
            }
            domain_rev_list = domain_rev_list_tmp;
        } else if (block_type == BLOCKTYPE_PREFIX) {
            if ((domain_list_tmp = fpst_insert_str(domain_list, line,
                                                   (uint32_t) block_type)) == NULL) {
                free(line);
                break;
            }
            domain_list = domain_list_tmp;
        } else if (block_type == BLOCKTYPE_SUBSTRING) {
            if ((domain_substr_list_tmp = fpst_insert_str(domain_substr_list, line,
                                                          (uint32_t) block_type)) == NULL) {
                free(line);
                break;
            }
            domain_substr_list = domain_substr_list_tmp;
        } else {
            free(line);
        }
    }
    if (!feof(fp)) {
        fpst_free(domain_list, free_list);
        fpst_free(domain_rev_list, free_list);
        fpst_free(domain_substr_list, free_list);
    } else {
        *domain_list_p = domain_list;
        *domain_rev_list_p = domain_rev_list;
        *domain_substr_list_p = domain_substr_list;
        ret = 0;
    }
    fclose(fp);

    return ret;
}
コード例 #18
0
ファイル: test.c プロジェクト: Jing0/neolibc
int main(int argc, char const *argv[]) {
    /* str_new */
    str_t string = str_new();
    /* str_set */
    str_set(string, "   %d%d%d", 1, 2, 3);
    /* str_append */
    str_append(string, "appending   end");
    /* str_println */
    str_println(string);
    /* str_reverse */
    str_reverse(string);
    str_println(string);
    /* str_length */
    printf("size before trimming:\t%zu\n", str_length(string));
    /* str_trim */
    str_trim(string);
    printf("size after trimming:\t%zu\n", str_length(string));
    /* str_substr */
    str_t substr = str_substr(string, 0, 3);
    printf("substr before swap:\t");
    str_println(substr);
    printf("string before swap:\t");
    str_println(string);
    str_swap(substr, string);
    printf("substr after swap:\t");
    str_println(substr);
    printf("string after swap:\t");
    str_println(string);
    printf("is string empty?\t%s\n",
           str_isempty(string) ? "Yes" : "No");
    printf("is substr equal to string?\t%s\n",
           str_compare(substr, string) ? "No" : "Yes");

    /* str_readFromFile */
    str_readFromFile(string, "neostring.c");
    printf("string size: %zu\t", str_length(string));
    printf("string capacity: %zu\n", string->capacity);
    str_set(string, "ok");
    printf("Before trimToSize():\n");
    printf("string size: %zu\t", str_length(string));
    printf("string capacity: %zu\n", string->capacity);
    /* str_trimToSize */
    str_trimToSize(string);
    printf("After trimToSize():\n");
    printf("string size: %zu\t", str_length(string));
    printf("string capacity: %zu\n", string->capacity);
    str_set(string, "hello, world");
    str_println(string);
    printf("%zu\n", string->size);
    printf("string has prefix ello?\t%s\n", str_hasPrefix(string, "ello") ? "Yes" : "No");
    printf("%zu\n", string->size);
    printf("string has suffix orld?\t%s\n", str_hasSuffix(string, "orld") ? "Yes" : "No");
    /* str_clone */
    str_t clone = str_clone(string);
    /* str_toupper */
    str_toupper(clone);
    /* str_writeToFile */
    str_writeToFile(clone, "./test.txt");
    /* str_destroy */
    str_destroy(string);
    str_destroy(clone);
    str_destroy(substr);
    return 0;
}