遇到了非常诡异的问题

软件和网站开发以及相关技术探讨
回复
宇智波殤
帖子: 9
注册时间: 2009-07-29 18:14

遇到了非常诡异的问题

#1

帖子 宇智波殤 » 2009-08-01 16:26

这个程序:
/* 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 次。
dbzhang800
帖子: 3182
注册时间: 2006-03-10 15:10
来自: xi'an China
联系:

Re: 遇到了非常诡异的问题

#2

帖子 dbzhang800 » 2009-08-01 17:15

Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3

可以看到第二行没有被打印出来。
不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 遇到了非常诡异的问题

#3

帖子 BigSnake.NET » 2009-08-01 17:28

我这里正常
无法重现
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
宇智波殤
帖子: 9
注册时间: 2009-07-29 18:14

Re: 遇到了非常诡异的问题

#4

帖子 宇智波殤 » 2009-08-01 17:51

dbzhang800 写了:
Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3

可以看到第二行没有被打印出来。
不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了
谢谢你的提醒。
已经贴出来了。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 遇到了非常诡异的问题

#5

帖子 BigSnake.NET » 2009-08-01 17:59

宇智波殤 写了:
dbzhang800 写了:
Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3

可以看到第二行没有被打印出来。
不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了
谢谢你的提醒。
已经贴出来了。
最后多输出一个 \n 试试
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
宇智波殤
帖子: 9
注册时间: 2009-07-29 18:14

Re: 遇到了非常诡异的问题

#6

帖子 宇智波殤 » 2009-08-01 18:07

BigSnake.NET 写了:
宇智波殤 写了:
dbzhang800 写了:
Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3

可以看到第二行没有被打印出来。
不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了
谢谢你的提醒。
已经贴出来了。
最后多输出一个 \n 试试
已经试过了,只是多了一个空行。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 遇到了非常诡异的问题

#7

帖子 BigSnake.NET » 2009-08-01 18:19

宇智波殤 写了:
BigSnake.NET 写了:
宇智波殤 写了:
dbzhang800 写了:
Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3

可以看到第二行没有被打印出来。
不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了
谢谢你的提醒。
已经贴出来了。
最后多输出一个 \n 试试
已经试过了,只是多了一个空行。
你试下改成重定向
./a.out > out.txt
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
宇智波殤
帖子: 9
注册时间: 2009-07-29 18:14

Re: 遇到了非常诡异的问题

#8

帖子 宇智波殤 » 2009-08-01 18:27

BigSnake.NET 写了:
宇智波殤 写了:
BigSnake.NET 写了:
宇智波殤 写了:
dbzhang800 写了:
Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3

可以看到第二行没有被打印出来。
不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了
谢谢你的提醒。
已经贴出来了。
最后多输出一个 \n 试试
已经试过了,只是多了一个空行。
你试下改成重定向
./a.out > out.txt
过了10多分钟了,没有反应。是否正常?
这时候out.txt打开后也什么都没有。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 遇到了非常诡异的问题

#9

帖子 BigSnake.NET » 2009-08-01 18:32

宇智波殤 写了:
BigSnake.NET 写了:
宇智波殤 写了:
BigSnake.NET 写了:
宇智波殤 写了:
dbzhang800 写了:
Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3

可以看到第二行没有被打印出来。
不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了
谢谢你的提醒。
已经贴出来了。
最后多输出一个 \n 试试
已经试过了,只是多了一个空行。
你试下改成重定向
./a.out > out.txt
过了10多分钟了,没有反应。是否正常?
这时候out.txt打开后也什么都没有。
没有反应?怎么可能... 你输入了足够的数字了么
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
宇智波殤
帖子: 9
注册时间: 2009-07-29 18:14

Re: 遇到了非常诡异的问题

#10

帖子 宇智波殤 » 2009-08-01 18:36

BigSnake.NET 写了:
宇智波殤 写了:
BigSnake.NET 写了:
宇智波殤 写了:
BigSnake.NET 写了:
宇智波殤 写了:
dbzhang800 写了:
Your numbers reversed are:
12 11 10 9 8 7 6 5 4 3

可以看到第二行没有被打印出来。
不妨把你3后面那一行贴出来,你只贴这一行,别人肯定看不到你的第二行了,贴出来大家或许都能看到了
谢谢你的提醒。
已经贴出来了。
最后多输出一个 \n 试试
已经试过了,只是多了一个空行。
你试下改成重定向
./a.out > out.txt
过了10多分钟了,没有反应。是否正常?
这时候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: 遇到了非常诡异的问题

#11

帖子 宇智波殤 » 2009-08-01 18:56

恩~知道了。
可能是终端有点问题吧,没有显示出来。
但重定位后就可以看到正确结果了。
非常感谢BigSnake.NET,也谢谢dbzhang800。
回复