【问题标题】:String output by character and output in main按字符输出字符串并在 main 中输出
【发布时间】:2021-12-28 15:53:06
【问题描述】:

我试图制作一个程序,它接受字符串并按字符输出,直到一切都很好。我想尝试在 main.js 中输出答案。首先,我只是尝试将它从form() 复制粘贴到main(),几乎没有更改,但它不起作用。此后,我必须以某种方式通过指针来实现,但我的尝试都没有成功。我怎样才能做到这一点?以下是我在 form.c 中输出的版本

form.h

#ifndef FORM_H
#define FORM_H
#include <stdio.h>
#include <stdlib.h>
char* form(long value);
#endif

form.c

char* form(long value){
    int a_value = 5; // allocation value
    char *arr; // output array
    arr = (char*) malloc (a_value * sizeof(char));
    int a_buf = a_value; // allocated buffer
    long v = value;
    arr[0] = 43;
    if (v < 0){
        arr[0] = 45;
        v *= -1; // in output, without this, we have numbers with minus
    }
    
    char c = 1; // elements inside array counter
    while (v){
        if (c == a_buf){
            //if all of alloceted memory initializated and we have requirement -> realloc
            a_buf += a_value;
            arr = (char*) realloc(arr, a_buf * sizeof(char));
        }
        arr[c] = v % 10;
        v /= 10;
        c++;
    }

    printf("%d ", arr[0]);
    int i = c - 1;
    for (;i;i--)
        printf("%d ", arr[i]);

    return arr;
}

main.c

#include "form.h"

int main (){
    long value; //buffer for user value
    scanf("%d", &value);
    char* array = form(value);
    return 0;
}

【问题讨论】:

  • scanf("%d", &amp;value); ==> scanf("%ld", &amp;value);.
  • 不要硬编码 ASCII 字符代码。使用'+''-' 而不是4345
  • 我想尝试在 main 中输出答案。你想怎么打印它main()
  • 作为一般的观察,不要#include标头在不需要它们的地方——只在它们所在的地方包含它们......所以系统头文件应该包含在.c文件中跨度>

标签: c pointers


【解决方案1】:

我的代码在 scanf("% d", &amp; value); 中工作 替换为scanf("% ld", &amp; value);,因为我们正在长时间扫描

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 2016-07-27
    • 1970-01-01
    相关资源
    最近更新 更多