【发布时间】: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", &value);==>scanf("%ld", &value);. -
不要硬编码 ASCII 字符代码。使用
'+'和'-'而不是43和45。 -
我想尝试在 main 中输出答案。你想怎么打印它
main()? -
作为一般的观察,不要
#include标头在不需要它们的地方——只在它们所在的地方包含它们......所以系统头文件应该包含在.c文件中跨度>