|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #define MAX 1024
- int main()
- {
- char squ[MAX];
- char *p = squ;
- int n, m, num, count = 0, ch;
- do
- {
- ch = getchar();
- *(p+count) = ch;
- count++;
- }while (ch != '\n');
- for (n = 1; n < MAX; n++)
- {
- if (count % (n*n) < n && count / (n*n) == 1)
- {
- num = n;
- break;
- }
- }
- for (m = 0; m < num; m++)
- {
- for (n = 0; n < num; n++)
- {
- printf("%c ", *(squ + num*n+m));
- }
- }
- return 0;
- }
-
复制代码
编译后输入数值就会出现:
Segmentation fault
我测试过了,当你的num没有赋值时(也就是你的那个if语句没有进入时),num会是一个随机数(我随机了一个32764),然后你的printf("%c ", *(squ + num*n+m));就会出现错误,因为偏移量太大了。
如果你给你的num一个初值,num=0,可以解决这个问题。
|
|