小编yul*_*ian的帖子

为什么数字'0'(数字,而不是字符)不显示?

问题是我在数组中看不到0.

我运行我的程序,看到2D数组.但是,我没有看到任何东西,而是0(第一个元素).

这是代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i;
    int *Ptr;

    scanf("%d%d", &M, &N); /* Size of array. */

    Ptr = malloc(M*N*sizeof(int));

    for (i = 0; i < M * N; i++) /* Filling in. */
    {
        *(Ptr + i) = i;
    }

    for (i = 0; i < M * N; i++) /* Displaying. */
    {
        if (i % N == 0)
            printf("\n");
        printf("%2.d  ", *(Ptr + i));
    }

    return 0;
} …
Run Code Online (Sandbox Code Playgroud)

c

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

如何将二维数组从一维数组中取出?

要访问我使用的任何元素*(Ptr + i)

有什么方法可以将二维数组放入分配的内存中,以便使用 访问任何元素array[i][j]

这是代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int *Ptr;

   Ptr = malloc(M*N*sizeof(int));

   for (i = 0; i <= M * N; i++)
      *(Ptr + i) = 1 + rand()%10;

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c memory-management

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

错误:'unsigned'之前的预期表达式

使用.wav文件...*ptr_8和*ptr_16 - 指向样本数组的指针.

我想让程序根据头的数据声明这些指针(如果8 bitsPerSample --->声明*ptr_8 ...)

if ( hdr.S1.BitsPerSample == 8 )        // Declaring array for samples. Depending
                                        // on header's data (8 or 16 bits).
    unsigned char *ptr_8;
else
    if ( hdr.S1.BitsPerSample == 16 )
        unsigned short *ptr_16;
Run Code Online (Sandbox Code Playgroud)

问题是它写道:

error: expected expression before 'unsigned'
Run Code Online (Sandbox Code Playgroud)

虽然我没有看到这种行为的原因,但两条线(在哪里*ptr_8*ptr_16必须声明).请告诉我有什么问题.


更新:

事实证明,声明是一个编译时的概念(见下面接受的答案).

变量在编译时已经被声明,所以它需要一次机器的资源(当你编译应用程序时)它们都已经在那里被声明了.这意味着它是尝试优化程序的最糟糕方式之一......

c optimization

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

当 `if (variable % 2 == 0)` 时程序崩溃

我正在编写一个可以找到完美数字的程序。阅读完这些完美数后,我发现了它们的列表:完美数列表。目前的输出是:

28         // perfect
496        // perfect
8128       // perfect
130816     // not perfect
2096128    // not perfect
33550336   // perfect
Run Code Online (Sandbox Code Playgroud)

我决定创建数组并将其与数字一起放置,将数字完全分开(没有其余部分)。因此,我将能够通过添加数组的所有元素来验证它是否是一个完美的数字。但应用程序崩溃了,我不明白为什么:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    unsigned long number;
    unsigned long arr2[100] = {0};
    int k = 0;

    for ( number = 0; number <= 130816; number++ )
        if ( 130816 % number == 0 )
            arr2[k++] = number;

    for ( k = 0; k < 100; k++ ) …
Run Code Online (Sandbox Code Playgroud)

c crash modulo undefined-behavior perfect-numbers

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

fseek()之后的奇怪行为已经奏效

我遇到了一种奇怪的行为.虽然调试,当while-loop循环的第一次:去后虽然/* "data-url" *//* "data-author" */部分代码我的下一个结果Debugging windows -> Watches:

(我正在使用Code :: Blocks IDE,Ubuntu 13.04)

长度dataUrl_tempString8个字节,长度dataAuthor_tempString11个字节,长度dataName_tempString9个字节......

第1张照片

但经过/* data-name */部分代码后,我得到的结果让我困惑:

第2张照片

现在它们的大小不是8,11和9字节!

有什么事?

你能帮我找到这种行为的原因吗?


这是该函数的代码:

int SubString_Search(char *fnameNew, char *strUrl, char *strAuthor, char *strName) {

    FILE *fp;
    FILE *ofp_erase;
    FILE *ofp;
    char ch_buf;
    int count = 0;

    char dataUrl[8] = "";
    char dataAuthor[11] = "";
    char dataName[9] = "";
    char *dataUrl_tempString = …
Run Code Online (Sandbox Code Playgroud)

c debugging fseek

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

访问结构中的数据

我想访问结构中的信息,如果有人可以帮助我在这里.

typedef struct {        
    int time;       
    char sat,rcv;  
    char LLI [3];
} obsd_t;


typedef struct {                
    obsd_t *data;      
} obs_t;
Run Code Online (Sandbox Code Playgroud)

我有类似的东西

obs_t obs;
int x;
Run Code Online (Sandbox Code Playgroud)

现在我想将x分配给obsd_t中的时间值,那么我应该怎么做.这是正确的

x=obs.data.time;
Run Code Online (Sandbox Code Playgroud)

ps我查看了stackoverflow的其他线程,但从那里无法理解.有些人没有接受任何答案,所以我很不情愿

c struct pointers

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

C:不使用内置函数将较短的字符串复制到更长的字符串

这里的任务是使用指针复制n(null终止)string2(s2)中的第一个字符s1.我知道如何将字符串从一个复制到另一个,但我遇到了消除额外值的问题.例如:

s1= 'This is a test'
s2 = 'A test'

after copying, I am left with:

s1 = 'a tests a test'
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

char *s1pointer;
const char *s2pointer;
int i;
int number_char_replace;

s1pointer = s1;
s2pointer = s2;
i=0;
number_char_replace = num; 

for(i=0;s1pointer[i] !='\0'||s2pointer[i]!='\0';i++)
{
s1pointer[i]=s2pointer[i];
}
}
Run Code Online (Sandbox Code Playgroud)

这是家庭作业,所以请不要觉得有必要给我答案.对逻辑的暗示将不胜感激.谢谢.

c string

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

生成随机数代码

我有一个函数生成随机数.为什么它总是生成相同的?我尝试了几次运行算法,但总是得到相同的结果.

#ifndef UTIL_H
#define UTIL_H

#include <time.h>
#include <sys/time.h>
#include <stdlib.h>

#define MIN 0
#define MAX 100000


void randomArray (double *array, int length)
{
    int i ;  
    for (i = 0; i < length; i++) 
    {
        array[i] = (double) (rand () /
                   (((double) RAND_MAX + 1) / (double) (MAX - MIN + 1))) + MIN;
    }
}

int main(void) 
{
    int i;
    double test_array[9];

    randomArray(test_array,  9);    

    for(i = 0; i < 9; i++)
        printf("%f ", test_array[i]);
    printf("\n");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c random

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

Haskell 99问题#10:'\'符号的奇怪行为

到目前为止,我有99.hs文件:

import Data.List

myEncode :: Eq a => [a] -> [(Int, a)]
myEncode = map (\x -> (length x, head x)) . group
Run Code Online (Sandbox Code Playgroud)

但是当试图在ghci中使用它时,我得到了这个(还没有找到解释,尽管我尝试过):

*Main> myEncode "///aaaaabbbbbbbccdddddxxyyzz0"
[(3,'/'),(5,'a'),(7,'b'),(2,'c'),(5,'d'),(2,'x'),(2,'y'),(2,'z'),(1,'0')]                           ?
*Main> myEncode "\\\aaaaabbbbbbbccdddddxxyyzz0"
[(1,'\\'),(1,'\a'),(4,'a'),(7,'b'),(2,'c'),(5,'d'),(2,'x'),(2,'y'),(2,'z'),(1,'0')]
Run Code Online (Sandbox Code Playgroud)

任何关于此的详尽来源(当然,关于haskell)的链接都会很好,也是对这个问题的一个很好的解释.

haskell literals

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

POpen使用字符串但不是变量

我可以得到以下工作:

fp = popen("curl http://192.168.0.144:8000/adder?wsdl", "r");
Run Code Online (Sandbox Code Playgroud)

但是,当我这样尝试时:

char* cmd;
strcpy(cmd, "curl http://");
strcat(cmd, qrdata->ip_addr);
strcat(cmd, ":8000/adder?wsdl");

fp = popen(cmd, "r");
Run Code Online (Sandbox Code Playgroud)

发生分段错误.

c curl popen segmentation-fault

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