K& R2,练习1-19 [英] K&R2, exercise 1-19

查看:52
本文介绍了K& R2,练习1-19的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法使其发挥作用。它编译时没有任何错误,但确实没有工作:


我想要的东西:


1.)1st我们将输入数组。 (在
" main"中调用getline)

2.)我们将在终端上打印该输入数组。 (在main中)

3.)我们将反转数组。 (在主要中调用反向)

4.)我们将打印反向数组。 (在主要中)

我得到的东西:


而不是打印反转阵列,它打印出一个不可打印的

字符在屏幕上:


------------- PROGRAM ------------------

/ * K& R2:1.9阵列,练习1-19


声明:

写一个反向的函数reverse(s)字符串s。

用它来编写一个程序,一次一行地支持它的输入。


* /

#include< stdio.h>


#define MAXLENGTH 1000

int getline(char arr []);

void reverse(char arr []);


int main(无效)

{

int i = 0;

char arr [MAXLENGTH - 1];


for(i = 0; i< MAXLENGTH - 1; ++ i)

arr [i] = 0;

而(getline(arr))

{

printf(" ; \ n --------------- \ n%s",arr);

reverse(arr);

printf(" \ n ****** \ n%s \ n",arr);

}

返回0;


}

int getline(char arr [])

{

int c = 0;

int i = 0;


for(i = 0; 9< MAXLENGTH - 1&& (c = getchar())!= EOF&& c!=''\ n''; +

+ i)

arr [i] = c;


if(c ==''\ n' ')

arr [i ++] = c;


arr [i] =''\ 0'';


返回i;

}

void reverse(char arr [])

{

int i = 0;

int j = MAXLENGTH - 1;

char rev_arr [MAXLENGTH - 1];


while(i < MAXLENGTH - 1)

rev_arr [i ++] = arr [j--];


for(i = 0; i< MAXLENGTH - 1 ; ++ i)

arr [i] = rev_arr [i];


}


- ------------ OUTPUT --------------------

[arch @ voodo kr2] $ gcc - ansi -pedantic -Wall -Wextra -O ex_1-19.c

[arch @ voodo kr2] $ ./a.out

喜欢这个


---------------

喜欢这个


******



[arch @ voodo kr2] $

解决方案

gcc - ansi -pedantic -Wall -Wextra -O ex_1-19.c

[arch @ voodo kr2]

./ a.out

喜欢这个


-------------- -

喜欢这个


******



[arch @ voodo kr2]





i am not able to make it work. it compiles without any error but does
not work:

what i WANTED:

1.) 1st we will take the input in to an array. (calling "getline" in
"main")
2.) we will print that input array on terminal. (in "main")
3.) we will reverse the array. (calling "reverse" in "main")
4.) we will print that reversed array. (in "main")
what i GET:

rather than printing the reversed array, it prints an "unprintable
character" on the screen:

------------- PROGRAMME ------------------
/* K&R2: 1.9 Arrays, exercise 1-19

STATEMENT:
write a function reverse(s) that reverses the character string s.
use it to write a programme that revereses its input a line at a time.

*/

#include<stdio.h>

#define MAXLENGTH 1000

int getline(char arr[]);
void reverse(char arr[]);

int main(void)
{
int i = 0;
char arr[MAXLENGTH - 1];

for(i = 0; i < MAXLENGTH - 1; ++i)
arr[i] = 0;
while(getline(arr))
{
printf("\n---------------\n%s", arr);
reverse(arr);
printf("\n ****** \n%s\n", arr);
}
return 0;

}
int getline(char arr[])
{
int c = 0;
int i = 0;

for(i=0; 9 < MAXLENGTH - 1 && (c = getchar()) != EOF && c != ''\n''; +
+i)
arr[i] = c;

if(c == ''\n'')
arr[i++] = c;

arr[i] = ''\0'';

return i;
}
void reverse(char arr[])
{
int i = 0;
int j = MAXLENGTH - 1;
char rev_arr[MAXLENGTH - 1];

while(i < MAXLENGTH - 1)
rev_arr[i++] = arr[j--];

for(i = 0; i < MAXLENGTH - 1; ++i)
arr[i] = rev_arr[i];

}

-------------- OUTPUT --------------------
[arch@voodo kr2]$ gcc -ansi -pedantic -Wall -Wextra -O ex_1-19.c
[arch@voodo kr2]$ ./a.out
like this

---------------
like this

******
?
[arch@voodo kr2]$

解决方案

gcc -ansi -pedantic -Wall -Wextra -O ex_1-19.c
[arch@voodo kr2]


./a.out
like this

---------------
like this

******
?
[arch@voodo kr2]





这篇关于K&amp; R2,练习1-19的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆