gpt4 book ai didi

c - 如何交换两个字符串的第一个字符?两个字符串存储在指针数组中

转载 作者:行者123 更新时间:2023-11-30 16:42:05 27 4
gpt4 key购买 nike

这是我的代码,我在其中创建了一个指针数组。指针数组保存字符串的基地址。我创建了 add 函数,通过该函数将字符串添加到指针数组中。我的座右铭是交换两个字符串“akshay”和“raman”的第一个字符。例如,交换后的“akshay”应变为“rkshay”,交换后的“raman”应变为“aaman”,即 akshay 的 a 应替换为 raman 的 r,反之亦然。但是,当我执行时,它显示错误,例如“问题导致程序停止正常工作。Windows 将关闭程序并通知是否有可用的解决方案。”请提供解决方案。

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define MAX 6
char *names[MAX];
int count;
int add(char *);
void swap(int,int);
void show();

int main()
{
int flag;
flag=add("akshay");
if(flag==0)
printf("unable to add string\n");
flag=add("parag");
if(flag==0)
printf("unable to add string\n");
flag=add("raman");
if(flag==0)
printf("unable to add string\n");
printf("names before swapping \n");
show();
swap(0,2);
printf("names after swapping \n");
show();
return 0;
}
/*adds given string */
int add(char *s)
{
if(count<MAX)
{
names[count]=s;
count++;
return 1;
}
else return 0;
}
/*swaps the first characters of the two strings */
void swap(int i,int j)
{
char temp;
temp=(*names[i]);
*names[i]=(*names[j]);
*names[j]=temp;
}
/* displays the elements */
void show()
{
int i;
for(i=0;i<count;i++)
{
puts(names[i]);
printf("\n");
}
}

最佳答案

How can I swap the first character of two strings with each other ?

该函数可以如下所示

void swap( char *s1, char *s2 )
{
if ( *s1 && *s2 )
{
char c = *s1;
*s1 = *s2;
*s2 = c;
}
}

对于您的程序,您正在尝试修改导致未定义行为的字符串文字。

来自 C 标准(6.4.5 字符串文字)

7 It is unspecified whether these arrays are distinct provided their elements have the appropriate values. If the program attempts to modify such an array, the behavior is undefined.

您应该为每个添加到指针数组的字符串动态分配内存。

当函数依赖全局变量时,这也是一个坏主意。

考虑到根据 C 标准,不带参数的函数 main 应声明为

int main( void )

关于c - 如何交换两个字符串的第一个字符?两个字符串存储在指针数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46042525/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com