scanf需要比请求更多的输入

我正在尝试使用scanf从用户那里获得5个浮点值,问题是用户需要输入6个值才能完成程序。 虽然我知道我不应该使用scanf,但令我困扰的是,我无法理解它。 有关如何使用scanf修复它的任何见解,建议吗? #include #include int main() { int i = 0 , j = 0; char buf[128] = {0}; float numbers[5] = {0.0}; float keep = 0.0; printf(“Please input 5 numbers : \n”); for (i = 0; i < 5; i++) { scanf("%f\n", &numbers[i]); } printf("Done!"); 谢谢, MIIJ

在C中将粗体文本输出到控制台(在Mac上 – Xcode)

最近我一直在尝试使用Xcode在C语言中编写基本程序,我发现自己正在寻找使文本变为粗体或使其变为粗体或彩色的方法。 尽管在SO上有很多类似的post,但没有一个certificate对我的情况有帮助,但是我在C ++中找到了很多这样的例子(如果这意味着什么)。 也许用Xcode在C中格式化文本是不可能的? 特别是,我已经阅读了有关使用ANSI转义编码的内容,但是当我使用这个代码时: printf(“\033[32;1mTest”) ,我最终将其作为输出: [32;1mTest 。 我相信这是因为ANSI转义编码不适用于MacOS(只是Linux)。 具体来说,我正在寻找一种方法,使用printf或在Mac上将文本打印到控制台的其他方法将格式化文本输出到控制台。 (这有可能吗?……) 如有需要,请随时询问任何其他信息。

奇怪的错误:在C中处理字符数组时中止陷阱

我想将每个字符的二进制值存储在一个字符串中并将其存储在一个数组中。 但是当我开始搞乱memset这样的function时,我无法控制调试。 #include #include int main() { char str[8]; char *ptr = “Hello”; int i; for(; *ptr != 0; ++ptr) { printf(“%c => “, *ptr); /* perform bitwise AND for every bit of the character */ for(i = 7; i >= 0; –i) if(*ptr & 1 << i) str[7-i]='1'; else str[7-i]='0'; //(*ptr & 1 << […]

如何在C中动态分配2D数组?

所以我有一个带结构的程序 typedef struct s_struct { int rows; int cols; char* two_d; //This is supposed to be the 2D array } *GRID; 我想创建一个敲击并动态分配内存,然后填充2D数组,但我不知道如何。 这是我对create(int prows,int pcols)函数的作用: GRID grid = malloc(sizeof(struct s_struct)); grid ->rows = prows; grid ->cols = pcols; grid ->two_d = malloc(sizeof(char) * (rows*cols)); 我不明白这是如何创建一个2D数组,如果它甚至如此,以及如何填充数组。

覆盖malloc以记录分配大小

我正在尝试使用一些代码在tcpdump中为我的项目记录mallocs,我正在使用的代码是: #include unsigned int memCount = 0; void *my_malloc(size_t size) { void *p = malloc(size); memCount = memCount + size; printf(“Memory Allocated :%u \n”, size return p; } #define malloc(size) my_malloc(size) 在网上查看了许多类似的问题后,似乎这应该可行,但是我的自定义malloc似乎没有被调用。 任何帮助将不胜感激,谢谢!

c插入排序错误

我正在进行交流插入排序,它工作正常,但排序后第一个数字总是一个奇怪的负数,程序错误。 #include #include #include void insertionSort(int list[], int last){ int hold; int walker; int current; int count; count = 0; for (current = 1; current = 0 && hold < list[walker]; walker–){ list[walker + 1] = list[walker]; } list [walker + 1] = hold; count++; } printf("\n\nHow many passes to sort?\n%d\n\n", count); return; } int […]

C浮点和双重比较

我在比较C中的简单浮点数和双精度数,特别是两者的值8.7。 现在我为每个变量分配8.7,当我打印时,我得到两个值的8.7000的结果。 为什么编译器添加了这些零。 我想问的主要问题是还有任何我没有看到的数字,如隐藏在尾随零之后的数字。 我读到由于缺乏精确度,我不应该使用float进行这样的比较,但是我认为它具有如此小的值,它确实可以存储8.7,并且需要一定程度的精确度来与另一个8.7值进行比较? 我唯一担心的是它实际上是在内存中的某个位置表示为例如8.70000003758或其他东西,这会让我的比较失败? 我试图使用%.20f打印f以查看可能隐藏的任何其他数字,但我认为只是创建了数字,否则不存在,因为数字的整体精确度变为8.6918734634834929或类似的东西。

DEV-C ++中的编译器错误

我编译了以下代码,在我的C代码中使用#include 声明,我在DEV-C ++中遇到以下编译器错误。 我想编译器中应该有一些选项来解决这个问题。 有人可以帮助解决这个问题。 以下是我的示例代码,它取自MSDN网站: #include #include void ErrorExit(LPTSTR lpszFunction) { // Retrieve the system error message for the last-error code LPVOID lpMsgBuf; LPVOID lpDisplayBuf; DWORD dw = GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); // Display the error message and exit the process lpDisplayBuf […]

文件/程序范围内的2D数组

我需要一个可以从不同方法访问的数组,我必须在main()中分配这个数组,然后让其他函数如foo()访问这个数组。 这个问题帮助我分配了数组: 用malloc定义一个2D数组并修改它 我正在定义这样的数组: char(*array)[100] = malloc((sizeof *array) * 25200); 我在main()中这样做 我可以在这个数组中存储25200个字符串,通过array[1]访问它们 现在可以从不同的方法访问此数组,我该怎么做?

Nordic SDK打印到串口

我有一个运行在Nordic SDK上的Arduino设备(它是Red Bear Lab BLE nano)。 我希望能够在GTKTerm中进行串行打印,以便能够调试我的代码中发生的事情。 为此,我有以下代码: /* * Copyright (c) 2014 Nordic Semiconductor. All Rights Reserved. * * The information contained herein is confidential property of Nordic Semiconductor. The use, * copying, transfer or disclosure of such information is prohibited except by express written * agreement with Nordic Semiconductor. * */ /** * […]