遇到了非常诡异的问题
-
- 帖子: 9
- 注册时间: 2009-07-29 18:14
遇到了非常诡异的问题
这个程序:
/* Read a number series and print it reversed.
Written by:
Date:
*/
#include <stdio.h>
int main (void)
{
// Local Declarations
int readNum;
int numbers[50];
// Statements
printf("You may enter up to 50 integers:\n");
printf("How many would you like to enter? ");
scanf ("%d", &readNum);
if (readNum > 50)
readNum = 50;
// Fill the array
printf("\nEnter your numbers: \n");
for (int i = 0; i < readNum; i++)
scanf("%d", &numbers);
// Print the array
printf("\nYour numbers reversed are: \n");
for (int i = readNum - 1, numPrinted = 0;
i >= 0;
i--)
{
printf("%3d", numbers);
if (numPrinted < 9)
numPrinted++;
else
{
printf("\n");
numPrinted = 0;
} // else
} // for
return 0;
} // main
/* Results:
You may enter up to 50 integers:
How many would you like to enter? 12
Enter your numbers:
1 2 3 4 5 6 7 8 9 10 11 12
Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
2 1
*/
longlovec@LongloveC-laptop:~/文档/《C程序设计软件工程环境》/书中程序$ c99 -Wall
p294_8-3_逆序打印输入.c
longlovec@LongloveC-laptop:~/文档/《C程序设计软件工程环境》/书中程序$ ./a.out
You may enter up to 50 integers:
How many would you like to enter? 12
Enter your numbers:
1 2 3 4 5 6 7 8 9 10 11 12
Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
longlovec@LongloveC-laptop:~/文档/《C程序设计软件工程环境》/书中程序$ 程序$
可以看到第二行没有被打印出来。
而且有一个奇怪的现象,这里非常不对劲:《C程序设计软件工程环境》/书中程序$ 程序$ 。
如果此时输入一个字符,那么就会这样:/《C程序设计软件工程环境》/书中程序$ d 序$ 。
这时候才完全消失:《C程序设计软件工程环境》/书中程序$ ddddd 。
此时再删除这几个d,就恢复正常了。
使用gdb调试,但gdb中第一行之后的printf语句确实执行了。
终端上却显示不出来。
到Windows下用Gcc for Windows(MinGW)编译之后运行反而正常。
这种问题至此我已经遇到过2次。
第一次是Debug时使用printf语句输出某个变量的值,但是这条printf语句看起来却和被注释掉一样没有起到任何作用。
第二次就是上述的,明明在gdb上printf语句已经执行,但是第二行却显示不出来。
而上述问题在Windows下使用MinGW从未发生过,第二次的程序在Windows下使用MinGW也正常。
感觉非常诡异,望高人相助。
/* Read a number series and print it reversed.
Written by:
Date:
*/
#include <stdio.h>
int main (void)
{
// Local Declarations
int readNum;
int numbers[50];
// Statements
printf("You may enter up to 50 integers:\n");
printf("How many would you like to enter? ");
scanf ("%d", &readNum);
if (readNum > 50)
readNum = 50;
// Fill the array
printf("\nEnter your numbers: \n");
for (int i = 0; i < readNum; i++)
scanf("%d", &numbers);
// Print the array
printf("\nYour numbers reversed are: \n");
for (int i = readNum - 1, numPrinted = 0;
i >= 0;
i--)
{
printf("%3d", numbers);
if (numPrinted < 9)
numPrinted++;
else
{
printf("\n");
numPrinted = 0;
} // else
} // for
return 0;
} // main
/* Results:
You may enter up to 50 integers:
How many would you like to enter? 12
Enter your numbers:
1 2 3 4 5 6 7 8 9 10 11 12
Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
2 1
*/
longlovec@LongloveC-laptop:~/文档/《C程序设计软件工程环境》/书中程序$ c99 -Wall
p294_8-3_逆序打印输入.c
longlovec@LongloveC-laptop:~/文档/《C程序设计软件工程环境》/书中程序$ ./a.out
You may enter up to 50 integers:
How many would you like to enter? 12
Enter your numbers:
1 2 3 4 5 6 7 8 9 10 11 12
Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
longlovec@LongloveC-laptop:~/文档/《C程序设计软件工程环境》/书中程序$ 程序$
可以看到第二行没有被打印出来。
而且有一个奇怪的现象,这里非常不对劲:《C程序设计软件工程环境》/书中程序$ 程序$ 。
如果此时输入一个字符,那么就会这样:/《C程序设计软件工程环境》/书中程序$ d 序$ 。
这时候才完全消失:《C程序设计软件工程环境》/书中程序$ ddddd 。
此时再删除这几个d,就恢复正常了。
使用gdb调试,但gdb中第一行之后的printf语句确实执行了。
终端上却显示不出来。
到Windows下用Gcc for Windows(MinGW)编译之后运行反而正常。
这种问题至此我已经遇到过2次。
第一次是Debug时使用printf语句输出某个变量的值,但是这条printf语句看起来却和被注释掉一样没有起到任何作用。
第二次就是上述的,明明在gdb上printf语句已经执行,但是第二行却显示不出来。
而上述问题在Windows下使用MinGW从未发生过,第二次的程序在Windows下使用MinGW也正常。
感觉非常诡异,望高人相助。
上次由 宇智波殤 在 2009-08-01 18:08,总共编辑 4 次。
-
- 帖子: 3182
- 注册时间: 2006-03-10 15:10
- 来自: xi'an China
- 联系:
Re: 遇到了非常诡异的问题
不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
可以看到第二行没有被打印出来。
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
-
- 帖子: 9
- 注册时间: 2009-07-29 18:14
Re: 遇到了非常诡异的问题
谢谢你的提醒。dbzhang800 写了:不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
可以看到第二行没有被打印出来。
已经贴出来了。
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
Re: 遇到了非常诡异的问题
最后多输出一个 \n 试试宇智波殤 写了:谢谢你的提醒。dbzhang800 写了:不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
可以看到第二行没有被打印出来。
已经贴出来了。
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
- 帖子: 9
- 注册时间: 2009-07-29 18:14
Re: 遇到了非常诡异的问题
已经试过了,只是多了一个空行。BigSnake.NET 写了:最后多输出一个 \n 试试宇智波殤 写了:谢谢你的提醒。dbzhang800 写了:不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
可以看到第二行没有被打印出来。
已经贴出来了。
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
Re: 遇到了非常诡异的问题
你试下改成重定向宇智波殤 写了:已经试过了,只是多了一个空行。BigSnake.NET 写了:最后多输出一个 \n 试试宇智波殤 写了:谢谢你的提醒。dbzhang800 写了:不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
可以看到第二行没有被打印出来。
已经贴出来了。
./a.out > out.txt
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
- 帖子: 9
- 注册时间: 2009-07-29 18:14
Re: 遇到了非常诡异的问题
过了10多分钟了,没有反应。是否正常?BigSnake.NET 写了:你试下改成重定向宇智波殤 写了:已经试过了,只是多了一个空行。BigSnake.NET 写了:最后多输出一个 \n 试试宇智波殤 写了:谢谢你的提醒。dbzhang800 写了:不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
可以看到第二行没有被打印出来。
已经贴出来了。
./a.out > out.txt
这时候out.txt打开后也什么都没有。
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
Re: 遇到了非常诡异的问题
没有反应?怎么可能... 你输入了足够的数字了么宇智波殤 写了:过了10多分钟了,没有反应。是否正常?BigSnake.NET 写了:你试下改成重定向宇智波殤 写了:已经试过了,只是多了一个空行。BigSnake.NET 写了:最后多输出一个 \n 试试宇智波殤 写了:谢谢你的提醒。dbzhang800 写了:不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
可以看到第二行没有被打印出来。
已经贴出来了。
./a.out > out.txt
这时候out.txt打开后也什么都没有。
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
- 帖子: 9
- 注册时间: 2009-07-29 18:14
Re: 遇到了非常诡异的问题
哦,我还以为卡了呢。BigSnake.NET 写了:宇智波殤 写了:过了10多分钟了,没有反应。是否正常?BigSnake.NET 写了:你试下改成重定向宇智波殤 写了:已经试过了,只是多了一个空行。BigSnake.NET 写了:最后多输出一个 \n 试试宇智波殤 写了:谢谢你的提醒。dbzhang800 写了:不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
可以看到第二行没有被打印出来。
已经贴出来了。
./a.out > out.txt
这时候out.txt打开后也什么都没有。
原来让我输入数字,那个提示原来也被输出到那个文件里了啊,第一次用这个命令,不好意思。
文件内容正常:
You may enter up to 50 integers:
How many would you like to enter?
Enter your numbers:
Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3
2 1
-
- 帖子: 9
- 注册时间: 2009-07-29 18:14
Re: 遇到了非常诡异的问题
恩~知道了。
可能是终端有点问题吧,没有显示出来。
但重定位后就可以看到正确结果了。
非常感谢BigSnake.NET,也谢谢dbzhang800。
可能是终端有点问题吧,没有显示出来。
但重定位后就可以看到正确结果了。
非常感谢BigSnake.NET,也谢谢dbzhang800。