问题是我在数组中看不到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) 要访问我使用的任何元素*(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) 使用.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必须声明).请告诉我有什么问题.
更新:
事实证明,声明是一个编译时的概念(见下面接受的答案).
变量在编译时已经被声明,所以它需要一次机器的资源(当你编译应用程序时)它们都已经在那里被声明了.这意味着它是尝试优化程序的最糟糕方式之一......
我正在编写一个可以找到完美数字的程序。阅读完这些完美数后,我发现了它们的列表:完美数列表。目前的输出是:
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) 我遇到了一种奇怪的行为.虽然调试,当while-loop循环的第一次:去后虽然/* "data-url" */和/* "data-author" */部分代码我的下一个结果Debugging windows -> Watches:
(我正在使用Code :: Blocks IDE,Ubuntu 13.04)
长度dataUrl_tempString为8个字节,长度dataAuthor_tempString为11个字节,长度dataName_tempString为9个字节......

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

现在它们的大小不是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) 我想访问结构中的信息,如果有人可以帮助我在这里.
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的其他线程,但从那里无法理解.有些人没有接受任何答案,所以我很不情愿
这里的任务是使用指针复制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)
这是家庭作业,所以请不要觉得有必要给我答案.对逻辑的暗示将不胜感激.谢谢.
我有一个函数生成随机数.为什么它总是生成相同的?我尝试了几次运行算法,但总是得到相同的结果.
#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) 到目前为止,我有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)的链接都会很好,也是对这个问题的一个很好的解释.
我可以得到以下工作:
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)
发生分段错误.