概述
用vs2013进行C语言编译,按照书本打出来后发现了一个问题,就是运行时输入会很奇怪,无法将全部字符输进去,而且也输不出字符,本人小白一枚,求高手指点,这是本人的码
#include
#include
int main()
{
void sort(char s[][6]);
int i;
char str[10][6];
printf(“input 10 strings:n”);
for(i=0;i<10;i++)
scanf_s(“%s”,str[i]);
sort(str);
printf(“now,the sequence is:n”);
for(i=0;i<10;i++)
printf(“%sn”,str[i]);
}
void sort(char s[10][6])
{
int i,j;
char *p,temp[10];
p=temp;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(strcmp(s[j],s[j+1])>0)
{
strcpy(p,s[j]);
strcpy(s[j],s[+j+i]);
strcpy(s[j+1],p);
}
}
顺带一提,这是按照书本打的,他的运行结果和本人的不一样,怀疑书本错了,请假高手怎么实现这个语句
int i;
char str[10][6];
printf(“input 10 strings:n”);
for(i=0;i<10;i++)
scanf_s(“%s”,str[i]);
解决方案:30分
修改如下:
#include
#include
void sort(char s[][6], int n); //第二个参数n是第一维的信息
int main()
{
int i;
char str[10][6];
printf("input 10 strings:n");
for (i = 0; i
scanf("%6s", str[i]);
sort(str, 10);
printf("now,the sequence is:n");
for (i = 0; i
printf("%sn", str[i]);
return 0;
}
void sort(char s[10][6], int n)//这里的第一个维数10,加与不加都是不加的意思。
{
int i, j;
//char *p, temp[10];
//p = temp;
char tmp[6];
//冒泡排序
for (i = 1; i
for (j = 0; j
if (strcmp(s[j], s[j + 1])>0)
{
strcpy(tmp, s[j]);
strcpy(s[j], s[j + 1]);
strcpy(s[j + 1], tmp);
}
}
既然是照着书打的,就不应该打错。
解决方案:10分
scanf_s还需要一个参数指定缓冲区有多大:
scanf_s("%s",str[i], 6);
或用scanf
最后
以上就是傻傻鲜花为你收集整理的c语言二维数视为一维数组,C语言一维数组和二维数组问题的全部内容,希望文章能够帮你解决c语言二维数视为一维数组,C语言一维数组和二维数组问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复