小编Sou*_*osh的帖子

如何根据输入数量定义数组大小?

据我所知,(我是c的初学者)你可以定义数组的大小,前提是用户知道用户将提供多少输入.但是,如何根据输入数量定义数组的大小?

例如,如果我必须提供10个数字作为输入,那么我如何以这样的方式声明一个数组,根据我的输入计数将其大小指定为10?(我不知道是否有可能,但我想知道)

c arrays variable-length-array

0
推荐指数
1
解决办法
1784
查看次数

循环数组元素在数组计数器的最后一个值上产生奇怪的值

是的,所以我有这个练习我应该完成:练习规范

而且我很难确保数组中的数字与计数器匹配.主要问题是在最后一个计数器(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)

注意:我已经为星星声明了一个变量,但我不知道如何将它实现到数组以满足练习的规范.

c arrays

0
推荐指数
1
解决办法
75
查看次数

动态内存分配中的大小错误

我对这段代码的输出感到困惑:

#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个字节?我错过了什么吗?

c arrays malloc pointers sizeof

0
推荐指数
1
解决办法
191
查看次数

数组和字符串的说明

我找到了一个代码,显示字符串中字符的频率.特别,

#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 arrays string

0
推荐指数
1
解决办法
70
查看次数

C中的代码块(调试模式)中的未定义行为是否会损坏我的电脑上的文件?

我的问题是:在代码块上以调试模式运行的C程序是否有可能删除计算机上的重要数据?(比如更改指针的值而不是指向它的值,然后取消引用它)

c undefined-behavior

0
推荐指数
1
解决办法
54
查看次数

从fgets()的返回值赋值

我的理解是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)

c pointers fgets

0
推荐指数
1
解决办法
869
查看次数

具有未定义长度但只有一个int元素的数组的用途是什么?

我有一个头文件,声明这些数组:

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)

c arrays struct

0
推荐指数
1
解决办法
77
查看次数

浮动随机化后程序崩溃

在计算圆[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 random double

0
推荐指数
1
解决办法
60
查看次数

如何在不使用头文件的情况下编写hello world

如何在不使用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- 用于printfscanf

c header-files forward-declaration

0
推荐指数
1
解决办法
1052
查看次数

当数字的顺序与格式不对应时,为什么printf函数按顺序打印结果?

当我运行以下代码时:

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.

c printf format-specifiers

0
推荐指数
1
解决办法
115
查看次数