相关疑难解决方法(0)

使用指针反转C中的字符串?

语言:C

我正在尝试编写一个C函数,它使用头文件char*strrev2(const char*string)作为面试准备的一部分,最接近(工作)的解决方案如下,但是我想要一个不包含malloc的实现...这可能吗?因为它返回一个字符意味着如果我使用malloc,则必须在另一个函数中使用free.

char *strrev2(const char *string){
    int l=strlen(string);
    char *r=malloc(l+1);
    for(int j=0;j<l;j++){
        r[j] = string[l-j-1];
    }
    r[l] = '\0';
    return r;
}
Run Code Online (Sandbox Code Playgroud)

[编辑]我已经使用缓冲区编写实现而没有char.谢谢你!

c string reverse

4
推荐指数
1
解决办法
3702
查看次数

如何重新排序整数的字节?

我的任务是使用C将数据文件从big endian转换为little endian,反之亦然。反之,我已经在网上寻找了大约3个小时的其他示例并阅读了我的教科书,但是我对如何开始这一工作非常执着功能。

到目前为止,我的事件顺序是正确的(1到4),但是在convert_and_save函数内部我是否必须使用创建一个char数组?char buffer[4];

有人可以帮帮我吗?即使您只是提供有关查找内容的线索,我也将不胜感激。

我需要写一个函数:

void convert_and_save(struct record item, FILE * output_handle, int number);
Run Code Online (Sandbox Code Playgroud)

在此函数中,我执行以下一系列步骤:

  1. 使用以下方法将整数转换为字符数组:

    int integer_to_characters(int number, char * buffer)
    {
       memcpy(buffer, &number, 4);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 反转该数组中字符的顺序。

  3. 使用以下方法将字符数组转换回整数:

    int characters_to_integer(char * buffer)
    {
       int result;
       memcpy(&result, buffer, 4);
       return result;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 使用以下命令将转换后的记录写入输出文件:

    void save_record(FILE * file_handle, struct record a)
    {
       char output_buffer[size_of_record];
       integer_to_characters(a.age, &(output_buffer[0]));
       memcpy(&(output_buffer[4]), a.name, 12);
       integer_to_characters(a.department, &(output_buffer[16]));
       fwrite(output_buffer, sizeof(char), size_of_record, file_handle);
    }
    
    Run Code Online (Sandbox Code Playgroud)

c endianness converters

4
推荐指数
2
解决办法
3683
查看次数

反转输入,输出字符串意外为空

#include <iostream>
#include <string>
using namespace std;
int main()
{
  string s1;
  cin>>s1;

  int n=s1.size();
  string s2;
  for(int a=0;a<n;a++)
  {
    s2[a]=s1[n-1-a];        
  }
  cout<<s2;
}
Run Code Online (Sandbox Code Playgroud)

但是我没有得到任何输出,但我可以打印反转字符串的元素.任何人都可以帮忙.

c++ string

4
推荐指数
1
解决办法
106
查看次数

无变量字符串反向

在最近的一次采访中,我被问到一个非常简单的问题,即在没有任何额外变量和任何内置函数的情况下反转字符串(不仅仅是打印).我能想到的最接近的是:

#include<stdio.h>
#include<string.h>
int main()
{
    char ch[100];
    scanf("%s",&ch);
    int i=0;
    while(i<strlen(ch)/2)
    {
       ch[i]=ch[strlen(ch)-1-i]+ch[i];
       ch[strlen(ch)-1-i]=ch[i]-ch[strlen(ch)-1-i];
       ch[i]=ch[i]-ch[strlen(ch)-1-i];
       i++;
    }
    printf("%s",ch);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我使用变量时拒绝了我的解决方案i.如果不使用计数器变量,这怎么可能呢?有没有其他方法可以解决这个问题?

编辑

这些是确切的问题(无论或多或少):

在C中不使用任何变量或内置函数来反转字符串.

c string data-structures

3
推荐指数
1
解决办法
177
查看次数

C ++中循环的替代方法

我想在不使用循环的情况下反转字符串。我的循环代码如下所示:

#include <iostream>
#include <string>

using namespace std;

string reverseString(string str) {
    string changedString;
    int strLength = int(str.length() - 1);
    for(int i {strLength}; i >= 0; i--) {
        changedString.push_back(str.at(i));
    }
    return changedString;
}

int main() {

    string str;

    cout << "Enter a string to reverse it:\n" << flush;
    cin >> str;
    cout << reverseString(str) << flush;
} 
Run Code Online (Sandbox Code Playgroud)

现在,我需要编写一个没有循环的函数。仅应使用String方法。您能帮我解决这个问题吗?

c++ string algorithm reverse loops

2
推荐指数
1
解决办法
118
查看次数

C:将字符串反转到位.我在之前的一个问题中使用过prog.它编译好,但崩溃与segmenation故障

我从main(C代码)调用Chris Conway提供的函数(如何在C或C++中反转字符串?).当我使用cygwin运行这个程序时,程序在while循环中崩溃(注释它破坏的行).你能解释一下这里出了什么问题.谢谢

#include <stdio.h>
#include <string.h>

void strrev(char* z);

int main()
{
        char *a;
    printf("before reverse: %s\n", a);
        strrev(a); // function provided by Chris Conway
    printf("after reverse: %s\n", a);
    return 0;
}

void strrev(char *str) {
  char temp, *end_ptr;

  /* If str is NULL or empty, do nothing */
  if( str == NULL || !(*str) )
    return;

  end_ptr = str + strlen(str) - 1;

  /* Swap the chars */
  while( end_ptr > str ) {
    temp = *str; …
Run Code Online (Sandbox Code Playgroud)

c pointers

1
推荐指数
1
解决办法
989
查看次数

从c ++函数返回一个字符串

我是初学者,我一直在读一本关于C++的书,我正在写一个关于函数的章节.我写了一个来反转一个字符串,将它的副本返回给main并输出它.

string reverseInput(string input);

int main()
{
    string input="Test string";
    //cin>>input;
    cout<<reverseInput(input);
    return 0;
}

string reverseInput(string input)
{
    string reverse=input;
    int count=input.length();
    for(int i=input.length(), j=0; i>=0; i--, j++){
        reverse[j]=input[i-1];
    }
    return reverse;
}
Run Code Online (Sandbox Code Playgroud)

以上似乎都有效.更改以下代码时会发生此问题:

string input="Test string";
Run Code Online (Sandbox Code Playgroud)

至:

string input;
cin>>input;
Run Code Online (Sandbox Code Playgroud)

在此更改之后,反向函数仅返回第一个输入字的反转,而不是整个字符串.我无法弄清楚我哪里出错了.

最后,是否有更优雅的方法通过使用引用来做到这一点,而无需复制输入,以便输入变量本身被修改?

c++ string words function

1
推荐指数
1
解决办法
300
查看次数

C++中"cout <<"出错

我试图在C++中反转char数组.这是我的代码:

void reverse(char s[]);
int main()
{
    char s [] = "Harry";
    cout << reverse(s) << endl;

    system("PAUSE");
    return 0;
}

void reverse(char s[])
{
    if( strlen( s ) > 0 ) {
        char* first = &s[ 0 ];
        char* last = &s[ strlen( s ) - 1 ];
        while( first < last ) {
            char tmp = *first;
            *first = *last;
            *last = tmp;
            ++first;
            --last;
        }
        return;
    }
Run Code Online (Sandbox Code Playgroud)

但是,我在cout << reverse(s)<< endl; 位于main方法中的那行,我不知道为什么.错误消息是没有操作符匹配这些操作数.有人可以帮我解决这个问题吗?

提前致谢.

c++ pointers

1
推荐指数
1
解决办法
144
查看次数

在c ++中,用c-string反转的最快方法是什么?

在仅使用库的c ++中,用c-string反转的最快方法是什么?特别是,是否有任何方法需要少于O(strlen)时间?

c++

0
推荐指数
1
解决办法
4147
查看次数

用指针反转字符串?

我试图用函数和一些指针反转一个字符串,但我无法获得更新原始字符串的函数.

#include <stdio.h>
#include <string.h>


void rev(char* string)
{
    char str2[strlen(string)];
    char *p1;
    char *p2;

    p1 = string + strlen(string)-1;
    p2 = str2;

    while(p1 >= string)
        *p2++ = *p1--;

    *p2 = '\0';
    p2 = p2 - strlen(string);

    string = p2; // This codesn't seem to update s1 or s2

}

int main(void)
{
    char s1[100] = "What does the fox say?";
    char s2[100] = "Titanic sinks";

    rev(s1);
    rev(s2);

    printf("\n\n%s\n", s1); 
    printf("%s\n", s2);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

功能有效但我无法获取main中的字符串以更新反向字符串.Imo string = p2应该将字符串更新为它的反转值.它确实如此,但仅限于功能内,而不是主功能......

c

0
推荐指数
1
解决办法
673
查看次数