c - 用空格写一个 char 数组
问题描述
问题是在一行中输入一些n个元素并用c语言制作一个数组。输入的格式是This。
输入:
15 //元素个数
1 4 4 2 3 5 6 xxxxxx 5 7 // 元素
我通过使用 scanf 函数进行了尝试,但没有成功。
char* tree;
int n;
scanf("%d", &n);
tree = (char*)malloc(sizeof(char) * n);
for (int i = 0; i < n; i++)
{
scanf("%c", &tree[i]);
}
这段代码有什么问题?
解决方案
一些更好的程序会是
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n = 0;
int* numbers = NULL;
printf("How many elements do you want to store:");
do {
if(1 != scanf("%d",&n)) {
puts("error in scanf");
n = 0;
}
if(n <= 0)
printf("Enter a positive number:");
}while(n <= 0);
numbers = malloc(n * sizeof (int));
if( numbers == NULL) {
puts("malloc failed");
return 0;
}
printf("\n Enter %d number of elements:", n);
for(int i = 0; i<n;i++)
if (1 != scanf("%d", &numbers[i]))
printf("error reading input\n");
printf("\n The Entered elements are: ");
for(int i = 0; i < n; i++)
printf("%d ", numbers[i]);
free(numbers);
numbers = NULL;
return 0;
}
推荐阅读
- mysql - 为什么 MySQL View 和同一个 View 的底层 SELECT 查询返回不同的结果?
- python - 如何最好地将 numpy 数组列表强制转换为 pandas 数据框列?
- c# - 处理游戏中的人口(统一)
- java - 如何在没有 org.jdesktop.beansbinding 的 Apache Netbeans 中实现绑定
- bash - bash:下面的序列试图做什么?
- angular - 如何使用 Greasemonkey 用我自己的 Angular 单页应用程序替换 web?
- html - 如何用破折号替换有序列表中的句点并仍然保持适当的缩进?
- ssl-certificate - javax.net.ssl.SSLHandshakeException:收到致命警报:google-client-api 的handshake_failure
- python - Python exec(script, globals()) 不显示 GUI (iPyWidgets)
- java - Jcov 代码覆盖实用程序导致错误 com.sun.javatest is missing