【问题标题】:how to swap two character of a character array? in c [closed]如何交换字符数组的两个字符?在 c [关闭]
【发布时间】:2022-01-06 11:03:40
【问题描述】:

如何替换字符数组中的两个字符?例如:

字符数组:peter

替换pt这两个字符并给出如下输出:

teper

这是我的尝试(这是错误的):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void swap(char*,char*);

main() {
    int n,i,j;
    char str[30][30];
    printf("how many names?:");
    scanf("%d",&n);
    for(i=0;i<n;i++) {
        printf("name %d?",i+1);
        scanf("%s",str[i]);
    }

    for(i=0;i<n;i++) {
    char ch1,ch2;
    printf(" which letters of name %d?:",i+1);
    scanf("%c%c",&ch1,&ch2);
    swap(&ch1,&ch2);
    printf("\n %s",str[i]);
    }
}
void swap(char *a,char *b){
 char temp;
 temp=*a;
 *a=*b;
 *b=temp;
}

【问题讨论】:

  • 请展示您的尝试。
  • 请仅使用其中一个标签,C 或 C++ - 两种不同语言的解决方案可能大不相同。
  • 有一个用于交换的标准函数模板。它叫std::swap
  • @TedLyngmo 这在 C 中不起作用。;-)
  • 请注意 std::swap 是 C++ 的解决方案,而不是 C

标签: c char swap


【解决方案1】:

你可以这样做

// you can use the same logic in c++
#include <stdio.h>

void swap(char * a, char * b) {
    char temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    char str[] = "peter";
    
    printf("before -> %s\n", str);
    swap(&str[0], &str[2]); // swap p and t
    printf("After -> %s\n", str);
}

【讨论】:

  • @TedLyngmo 是的 mb,已编辑:D 谢谢
  • char str[] = "peter";char str[] = { 'p', 'e', 't', 'e', 'r', '\0' }; 不会忘记 NULL 字节 ;)
  • @Scouarn。好的,谢谢编辑
  • @Tedlyngmo 用户必须在程序中输入两个字符。
  • @moh-co 这是唯一的逻辑,操作人员应该能够使用它编写自己的解决方案
猜你喜欢
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-29
相关资源
最近更新 更多