这个有错吗?
#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编辑过]
----------------解决方案--------------------------------------------------------
你要说你这是什么啊
----------------解决方案--------------------------------------------------------
这个要实现什么功能呢
----------------解决方案--------------------------------------------------------
以下是引用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;
}
编译连接正常,运行不行!
#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;
}
编译连接正常,运行不行!
#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
你输入这个看看,他有空格的
----------------解决方案--------------------------------------------------------