问的问题在这里是非常相似,我有一个问题.区别在于我必须将一个参数传递给一个删除空格并返回结果字符串/ char数组的函数.我得到了代码工作来删除空格但由于某种原因我留下了原始数组遗留的尾随字符.我甚至尝试过strncpy,但我遇到了很多错误.
这是我到目前为止:
#include <stdio.h>
#include <string.h>
#define STRINGMAX 1000 /*Maximium input size is 1000 characters*/
char* deblank(char* input) /* deblank accepts a char[] argument and returns a char[] */
{
char *output=input;
for (int i = 0, j = 0; i<strlen(input); i++,j++) /* Evaluate each character in the input */
{
if (input[i]!=' ') /* If the character is not a space */
output[j]=input[i]; /* Copy that character to the output char[] */
else
j--; /* If …Run Code Online (Sandbox Code Playgroud) 我很想知道为什么以下代码片段在某些C编译器中起作用而在其他C编译器中不起作用.我的教授可以在DevC++中编译这段代码,我也可以,但是我无法在VS 2010中编译这段代码.有什么想法吗?VS说a.word有一个糟糕的指针.我假设VS很生气,因为我没有初始化a.word,但为什么代码在DevC++中编译和工作?我必须添加a.word =""; 在strcpy之前然后它在VS中工作,但我又很想知道为什么.谢谢
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct foo{ int num;
char* word;
struct foo *ptr;};
int main() {
struct foo a;
a.num = 5; a.ptr = &a;
strcpy(a.word,"whichword");
}
Run Code Online (Sandbox Code Playgroud) 我很想知道为什么random_number=a+rand()%b;在C中产生a和b之间的随机数(不包括b).但是在Java中,这段代码不起作用.我知道在Java中这样做的正确方法是,random_number=a+(Math.random()*(b-a));但我很想知道为什么会有区别?数学运算不一样吗?我也明白随机函数的返回类型是不同的,但这种差异如何解释输出的差异?对不起,如果这似乎是一个微不足道的问题,但我很好奇.