【发布时间】:2016-04-21 00:47:07
【问题描述】:
我正在尝试读取缓冲区,复制所有非字母字符并将其转储到另一个缓冲区中。
我遇到的问题是,每当我遇到非数字字符时,它就不会再复制任何内容了。
我尝试检测空格,使用辅助缓冲区...
int main(void)
{
char buffer[] = "103 PLUS 1";
char buffer2[] = "a";
int i, number;
memset(buffer2, 0, sizeof (buffer2));
size_t length = strlen(buffer);
fprintf(stdout,"Buffer initially: %s \n", buffer);
fprintf(stdout,"Buffer2 initially: %s \n", buffer2);
for(i=0; i<length; i++)
{
if (number = isalpha(buffer[i]) == 0)
{
strncpy(&buffer2[i], &buffer[i], 1);
}
}
fprintf(stdout, "Copied buffer is: %s \n", buffer2);
return 0;
}
提前致谢。
【问题讨论】:
-
buffer2[]只有 1 个字符,大小为 2,不能容纳更多。您将其索引到buffer[]的长度,这是 未定义的行为。 -
在调试器中运行你的程序——这对你有很大帮助。另外,我可以告诉您,您的
if (number = isalpha(buffer[i]) == 0)s/b 已更改为if ((number = isalpha(buffer[i])) == 0)) -
@KevinDTimm 是我的错 :) 我没有定义缓冲区的大小是我做的测试之一,忘记再次修复它。
-
请不要更改问题。它使回复变得无意义。回滚。