据我所知,(我是c的初学者)你可以定义数组的大小,前提是用户知道用户将提供多少输入.但是,如何根据输入数量定义数组的大小?
例如,如果我必须提供10个数字作为输入,那么我如何以这样的方式声明一个数组,根据我的输入计数将其大小指定为10?(我不知道是否有可能,但我想知道)
是的,所以我有这个练习我应该完成:练习规范
而且我很难确保数组中的数字与计数器匹配.主要问题是在最后一个计数器(49)上似乎有一个数字不在数组中.如您所见: 当前程序的输出
我是C编程的新手,所以我可以肯定我做错了什么,我只是不确定是什么.另外,我如何添加星星以匹配Spec上的彩票阵列.
这是我的代码的当前状态:
int main()
{
//char star;
int i;
int lottery[49] = { 23,16,18,19,26,13,22, /* 1 .. 7 */
20,14,22,18,21,15,17, /* 8 .. 14 */
24,15,18,20,13,14,20, /* 15 .. 21 */
18,22,20,16,19,11,20, /* 22 .. 28 */
16,28,22,20,15,17,17, /* 29 .. 35 */
21,21,19,20,14,22,25, /* 36 .. 42 */
19,17,26,18,20,23,12 }; /* 43 .. 49 */
for (i = 0; i <= 49; i++)
printf(" %2d (%d) |\n", i, lottery[i]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
注意:我已经为星星声明了一个变量,但我不知道如何将它实现到数组以满足练习的规范.
我对这段代码的输出感到困惑:
#include <stdio.h>
#include <stdlib.h>
#define TIMING_OUTPUT_FILENAME_MAX_LENGTH 40
int main (int argc, char **argv)
{
char *timing_output_filename = malloc(TIMING_OUTPUT_FILENAME_MAX_LENGTH);
printf("requested buffer size is %ld bytes and pointer size is %ld bytes\n",
sizeof(timing_output_filename),
sizeof(*timing_output_filename));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
requested buffer size is 8 bytes and pointer size is 1 bytes
Run Code Online (Sandbox Code Playgroud)
它应该给我40个字节?我错过了什么吗?
我找到了一个代码,显示字符串中字符的频率.特别,
#include <stdio.h>
int main(){
char string[100];
int i, frequency[256] = {0};
printf("Enter a String\n");
gets(string);
for(i=0; string[i]!=0; i++){
frequency[string[i]]=frequency[string[i]]+1;
}
printf("\nCharacter Frequency\n");
for(i=0; i < 256; i++){
if(frequency[i] != 0){
printf("%5c%10d\n", i, frequency[i]);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,我不明白这一点:
frequency[string[i]]=frequency[string[i]]+1;
Run Code Online (Sandbox Code Playgroud)
它有什么作用?它是如何表现的?我相信那string[i]是长度frequency吗?但我不确定.
我的问题是:在代码块上以调试模式运行的C程序是否有可能删除计算机上的重要数据?(比如更改指针的值而不是指向它的值,然后取消引用它)
我的理解是fgets()返回输入的字符串参数,但是,
我收到"错误:从类型'char*'"分配类型'char [101]'时出现不兼容的类型,
那么,为什么变量'line'被认为是'char [101]'而不是'char*'?
char line[101] = "";
while (feof(filePtr) == 0){
line = fgets(line, 101, filePtr);
strcpy(strPtr, line);
}
Run Code Online (Sandbox Code Playgroud) 我有一个头文件,声明这些数组:
int stVal_On[] = {2};
int stVal_Off[] ={1};
int subVal_On[]={1};
int subMss[]={1};
int subVal_Off[]={0};
Run Code Online (Sandbox Code Playgroud)
然后在声明的结构中使用解除引用的数组:
WriteData结构的定义:
/* Write structure used in loop for Read- and Write Tests */
typedef struct WriteData {
char* name; // MMS object name
const VOID* data; // Data to write
const SINT32 localFormat; // SVI type (on server)
const SINT32 dataLength; // length of data to write/read
const SINT32 NbrofElmnts; // Number of elements to write/read
char* description; // SVI type as String (on server) …Run Code Online (Sandbox Code Playgroud) 在计算圆[3] [6]时,程序似乎在第54行崩溃.可能是什么导致了这个?我输入了一堆打印语句来查找一些信息,所有内容似乎都很好,直到完全[3] [6],这似乎没什么特别的,它崩溃.
int main() {
double a, b, circleXMax, circleYMax, circleRMax;
double rand_float(double a, double b);
int i, j;
int circleInfo = 3;
int circleNum = 50;
int PI = 3.14;
double circleArea;
double circleAreaMax = 0;
double circles[circleInfo][circleNum];
printf("Opened \n");
for(i = 1; i <= circleNum; i++) {
printf("Start of i = %d \n", i);
for(j = 1; j <= circleInfo; j++) {
printf("Start of j = %d \n", j);
if(j == 1 || j == 2) { …Run Code Online (Sandbox Code Playgroud) 如何在不使用C中的头文件的情况下编写hello world?
#include<conio.h>
#include<stdio.h>
void main(){
printf("Hello World");
getch();
}
Run Code Online (Sandbox Code Playgroud)
这是带头文件的简单C程序......
conio.h - 用于控制台stdio.h- 用于printf和scanf当我运行以下代码时:
printf("%d %f %d %d %f\n", 1.2 , 3000, 2.5, 400, 500);
Run Code Online (Sandbox Code Playgroud)
我认为答案可能是一些毫无意义的数字,但结果实际上是:
3000 1.200000 400 500 2.500000
Run Code Online (Sandbox Code Playgroud)
这与我输入的数字和格式相同.
它是如此有意义,以至于我无法说服自己忽视它.
有人能告诉我原因吗?我会很感激.
ps我正在使用Clion作为我的IDE.