2个功能,1是按 原始输入顺序 输出字符串。2是按照ascii顺序输出字符串。
问题来了,当我先按照ascii输出字符串后,调换了指针的序列,再按1就无法原始输出字符串了,
于是我想到了strncpy函数,但是仍然无法实现
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void output(char * a[],int n);
void ascii_output(char * a[],int n); //按照ascii顺序输出字符串
int main(void)
{char str[10][51];
int ch,i;
char *temp[10];
char *temp1[10];
fputs("Input 10 strings ",stdout);
for(i=0;i<10;i++)
{printf("input the %d string:\n",i+1);
fgets(str[i],51,stdin);
temp[i]=str[i]; //temp是以 行 为单位 定义的指针
temp1[i]=str[i];
}
fputs("1. 原始输出",stdout);
printf("\n");
fputs("2. 按照ascii码输出",stdout);
printf("\n");
printf("input a number :");
while(scanf("%d",&ch))
{
if(ch=='\n')continue;
switch(ch)
{
case 1:
output(temp1,10);
break;
case 2:
ascii_output(temp,10);break;
default:
printf("wrong input!\n");
break; //break在switch语句中使用的作用:跳到switch之后的下一条语句
}
fputs("继续输入序号:",stdout);
}
return 0;
}
//-------------------------原始输出--------------------
void output(char * a[] ,int n)
{
int i;
for(i=0;i<n;i++)
fputs(a[i],stdout);
}
//-------------------------ASCII顺序输出--------------------
void ascii_output(char * a[],int n )
{
int i,j;
char * temp;
for(i=0,j=i+1;i<n-1;i++,j++)
{
if(strncmp(a[i],a[j],51)>0)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
puts("字符串按照ascii顺序排序的结果为:");
output(a,n);
}
}
C语言 二维数组的复制问题,请帮帮忙
答案:1 悬赏:0 手机版
解决时间 2021-01-02 15:48
- 提问者网友:原来太熟悉了会陌生
- 2021-01-02 03:54
最佳答案
- 五星知识达人网友:低血压的长颈鹿
- 2021-01-02 04:14
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void output(char * a[],int n);
void ascii_output(char * a[],int n); //按照ascii顺序输出字符串
int main(void)
{char str[10][51];
int ch,i;
char *temp[10];
char *temp1[10];
fputs("Input 10 strings ",stdout);
for(i=0;i<10;i++)
{printf("input the %d string:\n",i+1);
fgets(str[i],51,stdin);
temp[i]=str[i]; //temp是以 行 为单位 定义的指针
temp1[i]=str[i];
}
fputs("1. 原始输出",stdout);
printf("\n");
fputs("2. 按照ascii码输出",stdout);
printf("\n");
printf("input a number :");
while(scanf("%d",&ch))
{
if(ch=='\n')continue;
switch(ch)
{
case 1:
output(temp1,10);
break;
case 2:
ascii_output(temp,10);break;
default:
printf("wrong input!\n");
break; //break在switch语句中使用的作用:跳到switch之后的下一条语句
}
fputs("继续输入序号:",stdout);
}
return 0;
}
//-------------------------原始输出--------------------
void output(char * a[] ,int n)
{
int i;
for(i=0;i<n;i++)
fputs(a[i],stdout);
}
//-------------------------ASCII顺序输出--------------------
int sorted=0;
char *temp[12];
void ascii_output(char * a[],int n )
{
int i,j;
char *temp[12],*p;
if(sorted==0){
for(i=0;i<10;i++){
temp[i]=a[i];
}
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++){
if(strncmp(temp[j],temp[j+1],51)>0)
{
p=temp[j];
temp[j]=temp[j+1];
temp[j+1]=p;
}
}
}}
puts("字符串按照ascii顺序排序的结果为:");
output(temp,n);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯