- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在通过 K & R 学习 C,我尝试为 Ex 1-17 编写程序,它应该打印字符数大于 80 的行。书面代码适用于字符数小于 80 的行,但对于字符数大于 80 的行超过 80 个字符我的编译器在运行时挂起。这就是我提供输入的方式 - 我随机输入了 80 多个字符,最后按下 enter,我的编译器挂起,我必须强制终止它。我在 Windows XP 上使用 Turbo c++ v4.5。我的问题是为什么我的编译器在按下回车键后挂起?请帮我解决这个问题。
#include<stdio.h>
/* Program to print lines having length more than 80 chars */
#define MAX 80
#define MAXSIZE 1000
int getline( char a[], int b );
void copy ( char to[], char from[] );
main()
{
int len1, len2;
char line [ MAXSIZE ];
char longest [ MAXSIZE ];
len1 = len2 = 0;
while( ( len1 = getline( line , MAXSIZE ) ) > 0 ) /* Check if there is a line */
{
if( len1 > MAX && len1 > len2 )
{
len2 = len1;
copy( longest, line );
}
}
if( len2 > MAX )
printf("%s", longest);
return 0;
}
int getline( char a[], int b )
{
int i, c;
for( i = 0; i < b - 1 && ( c = getchar() ) != EOF && c != '\n'; ++i )
a [ i ] = c;
if( c == '\n' )
{ /* In this section for loop is must the only way to insert \n and \0 in an array remember this method */
a [ i ] = '\n' ;
++i;
}
a [ i ] = '\0';
return i;
}
void copy( char to[], char from[] ) /* For Copying a longest line */
{
int i = 0;
while( ( to[ i ] = from [ i ] ) != '\0' );
++i;
}
最佳答案
你得到了无限循环,因为在你的函数中 void copy( char to[], char from[] )
你有
while( ( to[ i ] = from [ i ] ) != '\0' );
++i;
你在 while 循环后留下了一个分号。删除它,这将停止无限循环。
由于分号,++i
不是 while 循环的一部分,因此 i
的值永远不会递增。那是你的代码的问题。
另请注意,main()
应为 int main(void)
或 int main(int argc, char *argv[])
因为那是标准。在 TurboC++ 上,您可能不需要指定 main()
的返回类型,但 c 标准明确规定 main()
必须返回一个类型。引用What should main() return in C and C++?
另外请注意,正如@timrau 在他的评论中指出的那样,您将继续阅读输入,直到遇到 EOF,为此,您必须按 Ctrl + Z。否则,它只会继续要求输入(而您仅当您输入超过 80 个字符的字符串时才会得到输出)。
关于c - Ex 1-17 无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29327225/
Elixir 文档 states那个 In addition to the Elixir file extension .ex, Elixir also supports .exs files for
明日方舟TW-EX-5突袭怎么打 TW-EX-5突袭打法详解 关卡难点:开局高压+必须抢夺留声机 必备干员:减速类辅助、夜莺/法抗盾/控制干员 打法思路: 开局扔推王或者其他强力先锋,只
明日方舟TW-EX-6突袭怎么打 TW-EX-6突袭打法详解 关卡难点:抢夺留声机 必备干员:三个先锋,地刺,减速类干员 打法思路 开局左侧扔下桃金娘和先锋,然后马上爆费,在下方扔下第二
明日方舟TW-EX-7突袭怎么打 TW-EX-7突袭打法详解 关卡难点 本关最大的难点就是敌人输出过高,突袭难度情况下高练度重装也扛不住敌人的输出,需要利用箱子的布置还有留声机的输出来解决敌人,
明日方舟TW-EX-8突袭怎么打 TW-EX-8突袭打法详解 关卡难点 关卡的翻车点有两个,一个是注意自爆兵自爆的地点一定要正好,尽量保证其自爆的地方不要波及留声机,否则影响很大,另外就是如何蒸
明日方舟TW-EX-6突袭怎么打 TW-EX-6突袭小火龙单核打法攻略 1、关卡难点 活动开启时间:07月09日16:00-07月30日03:59 关卡开启时间:07月16日16:00-07
所以我一直在研究神圣,它看起来很棒。不幸的是,我没有找到任何像我试图实现的多文件用例示例。 所以我有一个名为configuration.py的文件,它旨在包含不同的变量,这些变量将(使用神圣)插入到代
我说的是Try ... Catch ex as Exception .... End Try 如果我将异常传递给错误记录器,我应该传递异常对象 (ex) 还是 ex.ToString ?传递 ex.T
这是我最近在工作的遗留代码中遇到的一个简单的最佳实践问题。我找不到针对这个特定问题的良好引用,因为我们可以通过多种方式来实现这一目标。但是,我想知道实现这一目标的最佳和最有效的方法。下面我创建了一些发
在 C# 中,年轻的开发人员经常使用“throw ex”而不是“throw”来向父方法抛出异常。 示例: try { // do stuff that can fail } catch (Ex
我们使用下面的脚本作为 EC2 实例的用户数据。我不明白 -ex 选项的用途是什么? #!/bin/bash -ex yum update -y yum groupinstall -y "Web Se
这是 ls -R 命令的输出: .: compare.sh searchByFile.sh startup.sh temp.txt test.sh compare.sh~ search
我真的是编程新手,我正在构建一个关于运动和位置的应用程序。我无法从“词典”中获取特定项目,但“词典”并不是真正的词典。 基本上,我有一个 TableView ,其中包含从我的 Firebase Fir
所以。我正在制作一个论坛,并且我想使用 AngularJS 来构建它。 首先。 现在,我已经通过以下方式建立了与数据库的连接: prepare($sql)){ $query->bind_result(
关于泛型的两个简单问题。 下面两个函数定义是否相同? FunctionA(Exception ex); FunctionB(T ex) where T : Exception; 通用实现 (Funct
MSVC 10 和 MSVC 9 在编译我的异常框架时都生成了 4 级警告消息,尽管程序的行为似乎是正确的。异常框架相当庞大和复杂,但我已经设法将其归结为它的本质。这是一个完整的程序,您可以在 VS1
我的问题是:用 getMessage 或 toString 或两者都记录更好吗?考虑到开源引发的错误。看到评论中的问题,但没有得到答案。也许我错过了什么?不要介意记录其中之一的小性能影响,但除非有充分
当我尝试使用 create-react-app 创建一个新的 React 应用程序时,我得到以下信息: » npx create-react-app my-order Creating a new R
背景 我正在尝试将 2 个单独工作的功能结合起来,但在使它们协同工作时遇到了麻烦。 *1) 如 solr wiki 所述我可以标记一个特定的 fq,然后在我的 facet.field 中排除它。即使在
我正在尝试使用从this website下载的代码来学习 ruby 。 我被困在这一点上。 def test_you_dont_get_null_pointer_errors_when_calli
我是一名优秀的程序员,十分优秀!