| 
 | 
 
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]; ... 
 
 
 
 
 
 
 |