求助
#include<stdio.h>#include<string.h>
#define NUMBER 5
#define NAME_LEN 64
void swap_str(char *s1, char *s2)
{
char *temp = s1;
s1 = s2;
s2 = temp;
}
void swap_int(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
void sort(int num[], char str[], int n)
{
int i, j;
for(i = 0; i < n -1; i++)
for(j = 0; j < n - 1 - i; j++)
{
if(num >num)
swap_int(&num, &num);
swap_str(str, str);
}
}
int main()
{
int i;
int height[] = {178, 175, 173, 165, 179};
char name[]={"Sato","Sanaka","Takao","Mike","Masaki"};
for(i = 0; i < NUMBER; i++)
printf("%2d : %-8s%4d\n", i + 1, name, height);
sort(height, name, NUMBER);
puts("\n按身高进行升序排列。");
for(i = 0; i < NUMBER; i++)
printf("%2d : %-8s%4d\n", i + 1, name, height);
return 0;
}
第一个交换字符串的函数,我知道用strcpy实现肯定可以,我想请问一下用指针实现不可以吗? 可以的
#include <stdio.h>
void swap_str(char *s1, char *s2)
{
char *temp = *s1;
*s1 = *s2;
*s2 = temp;
}
int main()
{
char * a="99";
char * b="Abc";
printf("before: a=%s b=%s\n",a,b);
swap_str(&a,&b);
printf("after: a=%s b=%s\n",a,b);
printf("OK\n");
}
wp231957 发表于 2022-5-26 10:57
可以的
老哥在你的编译环境能运行是吗?我这运行不了 hpdie 发表于 2022-5-26 11:19
老哥在你的编译环境能运行是吗?我这运行不了
运行不了还是编译不了还是无法生成exe hpdie 发表于 2022-5-26 11:19
老哥在你的编译环境能运行是吗?我这运行不了
#include <stdio.h>
void swap_str(char *s1, char *s2)
{
char *temp = *s1;
*s1 = *s2;
*s2 = temp;
}
int main()
{
char * a="我是第一个字符串";
char * b="me is the second chars";
printf("交换之前: a=%s b=%s\n",a,b);
swap_str(&a,&b);
printf("after: a=%s b=%s\n",a,b);
printf("OK\n");
}
/*
样例输出:
PS D:\wp> ./ct8
交换之前: a=我是第一个字符串 b=me is the second chars
after: a=me is the second chars b=我是第一个字符串
OK
PS D:\wp>
*/ wp231957 发表于 2022-5-26 11:22
void swap_str(char *s1, char *s2)
{
char *temp = *s1; //s1的解引用直接赋值给指针temp报错,
*s1 = *s2;//这里是只会交换两个字符串的首字符吗?
*s2 = temp; // 把指针赋值给解引用也是报错
}
||=== Build file: "no target" in "no project" (compiler: unknown) ===|
D:\software\codeblocks\程序\mj10.cpp||In function 'void swap_str(char*, char*)':|
D:\software\codeblocks\程序\mj10.cpp|5|error: invalid conversion from 'char' to 'char*' [-fpermissive]|
D:\software\codeblocks\程序\mj10.cpp|7|error: invalid conversion from 'char*' to 'char' [-fpermissive]|
D:\software\codeblocks\程序\mj10.cpp||In function 'int main()':|
D:\software\codeblocks\程序\mj10.cpp|12|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]|
D:\software\codeblocks\程序\mj10.cpp|13|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]|
D:\software\codeblocks\程序\mj10.cpp|15|error: cannot convert 'char**' to 'char*' for argument '1' to 'void swap_str(char*, char*)'|
||=== Build failed: 3 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|
hpdie 发表于 2022-5-26 11:44
void swap_str(char *s1, char *s2)
{
char *temp = *s1; //s1的解引用直接赋值给指针temp报错, ...
我二楼的第15行代码你有改动吗 wp231957 发表于 2022-5-26 12:11
我二楼的第15行代码你有改动吗
没改,一行都没改,传的是指针,接收的也是指针我知道、老哥你用的什么编译器啊?我下一下运行试试 hpdie 发表于 2022-5-26 15:03
没改,一行都没改,传的是指针,接收的也是指针我知道、老哥你用的什么编译器啊?我下一下运行试试
gcc11.x wp231957 发表于 2022-5-26 15:05
gcc11.x
老哥那我的程序问题出在哪里啊?
页:
[1]