如何交换字符数组的两个字符?在 c [关闭]
Posted
技术标签:
【中文标题】如何交换字符数组的两个字符?在 c [关闭]【英文标题】:how to swap two character of a character array? in c [closed] 【发布时间】:2022-01-06 11:03:40 【问题描述】:如何替换字符数组中的两个字符?例如:
字符数组:peter
替换p
和t
这两个字符并给出如下输出:
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 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章