c-写入malloc字符串



我是C编程语言的新手,确切地说是malloc。因此,我创建了这个程序,从argv中获取参数,并将它们全部放在一个字符串中,用空格分隔(第32行)。但当我运行它时,一切都会好起来,但下面的代码中似乎没有根据需要插入空格。

当我尝试评论时,第28:buffer[t] = argv[str][i];行出现空格。

我还尝试将:malloc(buffSize)转换为(char*),然后将其分配给缓冲区,看看是否有任何变化。但什么都没有。

如果有人能告诉我发生了什么,我会很高兴。提前感谢

#include <stdio.h>
#include <stdlib.h>
int main()
{
int str = 0, i = 0, t = 0, letterCount = 0, buffSize;
char *buffer;
char *argv[] = {"hello", "me", "too"};
int argc = 3;
while (str < argc)
{
while (argv[str][i++])
letterCount++;
str++;
i = 0;
}
buffSize = letterCount + argc + 1;
str = 0;
buffer = (char*) malloc(buffSize);
if (!buffer)
return (NULL);
while (str < argc)
{
while (argv[str][i] != '')
{
buffer[t] = argv[str][i];
t++;
i++;
}
buffer[t] = ' ';
str++;
i = 0;
}
printf("%s", buffer);
return (0);
}

实际上,您在问题中没有提到acav代表什么,所以我从代码中删除了它们,并将它们替换为等效数字。

您正在进行大量详尽的编程,比如不是使用strlen()strcat()之类的函数,而是手动实现它,但无论哪种方式,这都是您的选择。

  1. 当您将字符' '放入新数组中时,这一行中的buffer[t] = ' ';问题,但实际上并没有增加用于放置字符的索引t,这就是为什么空格字符总是被下一个字符覆盖的原因,因此,您应该执行buffer[t++] = ' ';
  2. 最后,您在第printf("%s", buffer);行打印,但实际上名为buffer的变量从未以空字符''终止,所以最后您应该执行buffer[t] = '';

这就是我在你的代码中编辑的全部内容,但你的代码实际上需要再次重写,这是经过编辑的代码,只有两个修改:

#include <stdio.h>
#include <stdlib.h>
#define NUM_OF_SPACES    3
int main()
{
int str = 0, i = 0, t = 0, letterCount = 0, buffSize;
char *buffer;
char *argv[] = {"hello", "me", "too"};
int argc = 3;
while (str < argc)
{
while (argv[str][i++])
letterCount++;
str++;
i = 0;
}
buffSize = letterCount + NUM_OF_SPACES + 1;
str = 0;
buffer = (char*) malloc(buffSize);
if (!buffer)
return (0);
while (str < argc)
{
while (argv[str][i] != '')
{
buffer[t] = argv[str][i];
t++;
i++;
}
buffer[t++] = ' ';
str++;
i = 0;
}
buffer[t] = '';
printf("%s", buffer);
return (0);
}

这是输出:

hello me too

但当我运行它时,一切都正常了,但下面的代码中似乎没有根据需要插入空格。

正如评论中所指出的,您不太可能运行问题中提供的代码,因为它不是有效的C.

但是,如果你运行了一个类似的程序,并得到了你描述的结果,那么仔细看看这两段代码:

buffer[t] = argv[str][i];
t++;
i++;

buffer[t] = ' ';
str++;
i = 0;

您看到这些之间解释问题的重要区别了吗?前者做了什么,而后者做不到?你有没有注意到,虽然你的程序不在单词之间打印空格,但它(我希望)会在最后一个单词后面打印一个空格?

这并不是代码的唯一问题,但一定要在那里寻找直接问题的答案。

相关内容

  • 没有找到相关文章

最新更新