c - 1.14 任务在 Kernighan,Ritchie "Programming with C"书中

标签 c kernighan-and-ritchie

我正在执行“The C Programming Language”一书中的任务 1.14,但不知道我的代码出了什么问题,尤其是在打印图表时。

#include <stdio.h>

#define MAX 300

int main(void) {
    int c,n,k,i,g,p,f;
    int mas[MAX];

    for(i = 0; i < MAX; i++) //array for the string's length
        mas[i] = 0;

    i = 0;
    n = k = f = 0;

    //getting strings to print

    while((c = getchar()) != EOF) {
        n++;        //counter for each string in array
        if(c == '\n'){
            mas[i] = n;
            i++;
            if(n > k){  //the highest number to print
                k = n;
            }
            n = 0;
        }
    }

//printing diagrams. I'm trying to do this:
/*
  |
k |
  |
  |
  |
  |_____________________
              i  
*/

    for(; k > 0; k--){  //diagram's height
        for(g = 0; g < i; g++){ //diagram's length
            if(mas[g] = k){     //if an array have an appropriate height to print
                printf("%c", "#");
            } else
                putchar(' ');   
        }
        putchar('\n');
    }
    return 0;
}

您可以在 ideone.com 中获取它 — http://ideone.com/1RZ1zU .

最佳答案

if(mas[g] = k){

你可能是说

if(mas[g] == k){

这也是错误的:

printf("%c", "#");

%c 需要一个字符,而不是一个字符串:

printf("%c", '#');

关于c - 1.14 任务在 Kernighan,Ritchie "Programming with C"书中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21365852/

相关文章:

c - 如何通过 C 中的套接字使用 OpenSSL 公钥发送然后加密消息?

c++ - void* 作为通用引用类型如何工作?

c - 在 K&R 1.9 最长行示例中,getchar() 在做什么?

c - 为什么我在 Xcode 上收到以下代码的 (lldb) 运行时错误?

c - c 中 txt 的数组(长数字)

c - 如何将 int eg.99 转换为 char?

c - argv 指向指针数组的指针

c - 更好地理解 printf - 当提供的值为负时,它用 "%c"打印什么?

c - 写在数组外的位置

c - 为什么来自 K&R 的某些代码在代码 :Blocks? 中不起作用