|
5鱼币
本帖最后由 ifuchuan 于 2021-6-26 20:53 编辑
#include <stdio.h>
#define NUMBER 128
#define ELEMENT 2
void rev_string(char s[][128],int n)
{
int i=0;
int j=0;
int num=0;
char t[2][NUMBER]; //这个数组的作用是什么?
for(i=0; i<n; i++)
{
while(s[i][j]!='\0')
{
num++;
j++;
}
for(j=0; j<num; j++)
{
t[i][j]=s[i][num-1-j]; //这句作用是啥?
}
for(j=0; j<num; j++)
{
s[i][j]=t[i][j];
}
}
return;
}
int main(void)
{
char str[ELEMENT][NUMBER];
int i=0;
printf("请输入字符串:");
printf("\n");
for(i=0; i<ELEMENT; i++)
{
printf("str[%d]",i);
scanf("%s",str[i]);
}
rev_string(str,ELEMENT);
printf("该字符串颠倒后为:\n");
for(i=0; i<ELEMENT; i++)
{
printf("%s\n",str[i]);
}
printf("\n");
}
楼主的代码有问题,VS2017环境下编译不通过。我做出了一些修改。
#include <stdio.h>
#define NUMBER 128
#define ELEMENT 2
void rev_string(char s[][128], int n)
{
int i = 0;
int j = 0;
int num = 0;
char t[2][NUMBER]; //这个数组的作用是什么? 答:做缓冲区。
for (i = 0; i < n; i++)
{
while (s[i][num] != '\0')
{
num++;
}
for (j = 0; j < num; j++)
{
t[i][j] = s[i][num - 1 - j]; //这句作用是啥?答:(反向存储)将s数组第i行的数据,从最后一个开始依次传递给缓冲区t数组
}
for (j = 0; j < num; j++) //用缓冲区的数据把s数组原有的数据给覆盖掉。
{
s[i][j] = t[i][j];
}
}
return;
}
int main(void)
{
char str[ELEMENT][NUMBER];
int i = 0;
printf("请输入字符串:");
printf("\n");
for (i = 0; i < ELEMENT; i++)
{
printf("str[%d] = ", i);
scanf_s("%s", str[i], NUMBER-1);
}
rev_string(str, ELEMENT);
printf("该字符串颠倒后为:\n");
for (i = 0; i < ELEMENT; i++)
{
printf("%s\n", str[i]);
}
printf("\n");
}
|
最佳答案
查看完整内容
楼主的代码有问题,VS2017环境下编译不通过。我做出了一些修改。
#include
#define NUMBER 128
#define ELEMENT 2
void rev_string(char s[][128], int n)
{
int i = 0;
int j = 0;
int num = 0;
char t[2][NUMBER]; //这个数组的作用是什么? 答:做缓冲区。
for (i = 0; i < n; i++)
{
while (s[num] != '\0')
{
num++;
}
for (j = 0; j < num; j++)
{
t[j] = s[num - 1 - j]; ...
|