如何交换字符数组的两个字符?在 c [关闭]

Posted

技术标签:

【中文标题】如何交换字符数组的两个字符?在 c [关闭]【英文标题】:how to swap two character of a character array? in c [closed] 【发布时间】: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 【参考方案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 这是唯一的逻辑,操作人员应该能够使用它编写自己的解决方案

以上是关于如何交换字符数组的两个字符?在 c [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用交换函数和指针反转字符串数组? (C++)

如何使用带有指向数组的指针的SCANF?

如何使字符串数组与交换函数交换它的组件?

倒置字符数组中的字符

如何将数组中的字符串转换为小写[关闭]

python中如何把相邻的字符交换位置