| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1826 人关注过本帖
标题:好急好急呀 又是null pointer assignment 的问题
取消只看楼主 加入收藏
缺月挂疏桐
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-23
收藏
 问题点数:0 回复次数:7 
好急好急呀 又是null pointer assignment 的问题
为什么程序又出现了null pointer assignment
我查了半天没看见数组越界呢
#include "stdio.h"
#include "string.h"
main()
{int n,m,i,j,k,p,q,s,k1,l,sig,num,r;
char a[200][200],t='\n',b[200][200],ch;
scanf("%d",&num);
ch=getchar();
ch=getchar();
do{s=0;
scanf("%d %d%c",&m,&n,t);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf(" %c",&a[i][j]);
for(i=0;i<m;i++)
a[i][n]='\0';
scanf("%d",&k);
k1=0;
do{scanf("%s",b[k1]);
l=strlen(b[k1]);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{if(a[i][j]==b[0][0])
{sig=1;
{if(l<=n-j)
{for(p=0,q=j;p<l;p++,q++)
if(a[i][q]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=j+1)
{for(p=0,q=j;p<l;p++,q--)
if(a[i][q]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=i+1)
{for(p=0,q=i;p<l;p++,q--)
if(a[q][j]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=m-i)
{for(p=0,q=i;p<l;p++,q++)
if(a[q][j]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=n-j&&l<=m-i)
for(p=0,q=i,r=j;p<l;p++,q++,r++)
{if(a[q][r]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=i+1&&l<=j+1)
{for(p=0,r=j,q=i;p<l;p++,r--,q--)
if(a[q][r]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=m-i&&l<=j+1)
for(p=0,r=j,q=i;p<l;p++,r--,q++)
{if(a[q][r]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=i+1&&l<=n-j)
for(p=0,r=j,q=i;p<l;p++,r++,q--)
{if(a[q][r]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
}
}
t: ;
k1++;
}while(k1<k);
s++;
}while(s<num);
}
搜索更多相关主题的帖子: assignment pointer null 
2007-04-24 18:52
缺月挂疏桐
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-23
收藏
得分:0 
不是我不想弄好 而是不知道怎么弄了
就是那个goto 本来是想跳出循环的 但是用break 没跳出去
就只有用goto 一个空语句跳出了


2007-04-24 19:20
缺月挂疏桐
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-23
收藏
得分:0 
在那里设置一个标记跳出来呢

2007-04-24 20:06
缺月挂疏桐
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-23
收藏
得分:0 
程序的目的是
分若干组数据输入字母表
{给定一个m*n的字母表
给定若干个单词
在字母表中寻找单词是否出现
可以从八个方向寻找
即向右,向左,向上,向下,左上,左下,右上,右下
找到即输出字母表中单词首字母对应的位置
若出现多次 只输出最左上角的那个位置
#include "stdio.h"
#include "string.h"
main()
{int n,m,i,j,k,p,q,s,k1,l,sig,num,r;
char a[200][200],b[200][200],ch;
scanf("%d",&num);/输入几组单词表/
ch=getchar();
ch=getchar();
s=0;
do{
scanf("%d %d",&m,&n);/单词表的行数列数/
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf(" %c",&a[i][j]);/输入单词表中字母/

scanf("%d",&k);/被寻找单词的个数/
k1=0;
do{scanf("%s",b[k1]);/输入被寻找的单词/
l=strlen(b[k1]);
for(i=0;i<m;i++)/一个个从首字母进行寻找判断/
for(j=0;j<n;j++)
{if(a[i][j]==b[0][0])
{sig=1;/标志变量/
{if(l<=n-j) /当首字母相同的时候从八个方向进行寻找/
{for(p=0,q=j;p<l;p++,q++)
if(a[i][q]!=b[k1][p]) /比较每个方向上的各个字符是否与单词相同,不同时跳出循环/
{sig=0;
break;
}
}
else sig=0;
if(sig==1) /包含单词时时输出字母表中的对应的与被找单词相同的第一个字母的位置/
{printf("%d %d\n",i+1,j+1);
goto t; /想跳出循环但是用break跳不出整个,就用了goto/
}
}
{if(l<=j+1)
{for(p=0,q=j;p<l;p++,q--)
if(a[i][q]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=i+1)
{for(p=0,q=i;p<l;p++,q--)
if(a[q][j]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=m-i)
{for(p=0,q=i;p<l;p++,q++)
if(a[q][j]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=n-j&&l<=m-i)
for(p=0,q=i,r=j;p<l;p++,q++,r++)
{if(a[q][r]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=i+1&&l<=j+1)
{for(p=0,r=j,q=i;p<l;p++,r--,q--)
if(a[q][r]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=m-i&&l<=j+1)
for(p=0,r=j,q=i;p<l;p++,r--,q++)
{if(a[q][r]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=i+1&&l<=n-j)
for(p=0,r=j,q=i;p<l;p++,r++,q--)
{if(a[q][r]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
}
}
t: ;
k1++;
}while(k1<k);
s++;
}while(s<num);
}


2007-04-24 23:50
缺月挂疏桐
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-23
收藏
得分:0 
不知道这样说行吗 修改程序是啥意思呢
要不我再修改修改 不过实在不知道怎么样改呢
有的地方输入是为了符合题目中规定的意思哈
比如两个getchar()是为了输入'\n'呢哈

因为是用机器判程序呢

2007-04-25 00:01
缺月挂疏桐
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-23
收藏
得分:0 
我最喜欢这首词了
苏轼写的真是太好了
意境凄美 让人心灵受到一种孤冷的洗礼........

程序我设了个标记变量跳出了
不过奇怪的是在tc上能够输出结果
不过换到了我们的gcc编译器上居然没有东西输出来
不知道是什么原因....http://bbs.bc-cn.net/Skins/Default/emot/em13.gif

2007-04-25 22:41
缺月挂疏桐
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-23
收藏
得分:0 
谁知道原因呢 我都被这程序折腾好久好久了
呜呜呜
救救我


2007-04-25 23:03
缺月挂疏桐
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-3-23
收藏
得分:0 
知道了 你才是大哥呢
程序思路还是很明了的
没什么了
已经出来了


2007-04-26 19:41
快速回复:好急好急呀 又是null pointer assignment 的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017572 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved