当前位置: 代码迷 >> C语言 >> 这个有错吗?
  详细解决方案

这个有错吗?

热度:148   发布时间:2006-05-04 15:25:00.0
这个有错吗?
#include <stdio.h>
int main()
{int n,j,i=0,count=0;
char str[71];
char *p;
char **q=0;
scanf("%d",&n);
while(count<n)
{ scanf("%s",str);
p=str;
while(*p!='\0')
{p++;i++;}
if(i>70) return 0;
p--;
for(j=0;j<i;j++)
{*q[count]=*p;q[count]++;p--;}
count++;
}
for(i=0;i<n;i++)
{printf("%s\n",q[i]);}
getch();
return 0;
}
编译连接正常,运行不行!

[此贴子已经被作者于2006-5-4 15:31:47编辑过]

搜索更多相关的解决方案: include  return  count  

----------------解决方案--------------------------------------------------------
你要说你这是什么啊
----------------解决方案--------------------------------------------------------

这个要实现什么功能呢


----------------解决方案--------------------------------------------------------
以下是引用sunnvya在2006-5-4 15:25:00的发言:
#include <stdio.h>
int main()
{int n,j,i=0,count=0;
char str[71];
char *p;
char **q=0;
scanf("%d",&n);
while(count<n)
{ scanf("%s",str);
p=str;
while(*p!='\0')
{p++;i++;}
if(i>70) return 0;
p--;
for(j=0;j<i;j++)
{*q[count]=*p;q[count]++;p--;}
count++;
}
for(i=0;i<n;i++)
{printf("%s\n",q[i]);}
getch();
return 0;
}
编译连接正常,运行不行!

这位朋友想法挺好,意图我也看明白了:你是想通过二级指针**q实现n个字符串的逆序存储。然而你存在一个根本性的错误观点:把二级指针与二维数组混为一谈了。实际上,不管几级指针都只是个空架子,只有当它们指向某种“存储实体”时才能发挥效用。


----------------解决方案--------------------------------------------------------
以下是引用sunnvya在2006-5-4 15:25:00的发言:
#include <stdio.h>
int main()
{int n,j,i=0,count=0;
char str[71];
char *p;
char **q=0;
scanf("%d",&n);
while(count<n)
{ scanf("%s",str);
p=str;
while(*p!='\0')
{p++;i++;}
if(i>70) return 0;
p--;
for(j=0;j<i;j++)
{*q[count]=*p;q[count]++;p--;}  /*这有问题,还没有指向谁,就赋值,会出现不可意料的错误*/
count++;
}
for(i=0;i<n;i++)
{printf("%s\n",q[i]);}
getch();
return 0;
}
编译连接正常,运行不行!

改成q[count]=p;就没有问题了,不过,我不知道您要表达什么中心思想?


----------------解决方案--------------------------------------------------------

用指针申请一个空间,再指向这个空间可以解决。
如果您是要按4楼的想法实现这个程序目的的话。


----------------解决方案--------------------------------------------------------
,字符串逆转还非要使用二级指针,这不拿大炮大蚊子吗,库函数直接就实现了
----------------解决方案--------------------------------------------------------
带有空格的一行字符串
----------------解决方案--------------------------------------------------------
回复:(sunnvya)这个有错吗?
/*
根据最小改动原则,偶帮您改了一下程序,不知是否符合兄台本意?
测试数据:
输入
5
123.456
map
ink
flag
2.718
输出
654.321
pam
kni
galf
817.2
*/
#include<stdio.h>
#include<conio.h>
int main()
{ int n,j,i=0,count=0;
char str[71];
char rev[10][71];//////
char *p;
char *qs[10]; //////
//// char **q=0;
char **q=qs;///////////
for(i=0;i<10;i++)
qs[i]=rev[i];//////////
scanf("%d",&n);
if(n>10)return 0;//////
while(count<n)
{ scanf("%s",str);
p=str;
i=0;////////////
while(*p!='\0')
{ p++;i++; }
if(i>70)return 0;
p--;
for(j=0;j<i;j++)
{ ////*q[count]=*p;
*(*q+j)=*p;/////////////////
////q[count]++;
p--;
}
*(*q+j)='\0';//////////////////
count++;
q=qs+count;
}
for(i=0;i<n;i++)
{
printf("%s\n",qs[i]);//////////
}
getch();
return 0;
}

----------------解决方案--------------------------------------------------------
3
Frankly, I don't think we'll make much
money out of this scheme.
madam I'm adam
你输入这个看看,他有空格的
----------------解决方案--------------------------------------------------------
  相关解决方案