Linux上C程序中的输出无效

  • 本文关键字:输出 无效 程序 Linux c
  • 更新时间 :
  • 英文 :


我正在Ubuntu上用C编写一个类似的程序。任务是在控制台上显示输出。我使用的是gcc编译器。任务是得到这样的输出12, Name Surname, 36, my lapt, -11,但我得到的是12, apt, 36, my lapt, -11。我知道我的程序在strncat(d, c, 4);覆盖a,但我不知道原因。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char a[] = "Name";
char b[] = "Surname";
strcat(a, b);
int x = strlen(a);
int y = strcmp(b, a);
char d[] = "my ";
char c[] = "laptop";
strncat(d, c, 4);
int z = strncmp(a, c, 2);
printf("%d, %s, %d, %s, %dn", x, a, y, d, z);
return 0;
}
char a[] = "Name";
char b[] = "Surname";
strcat(a, b);

是错误的。a没有空间。它只有5号。这将起作用:

char a[20] = "Name"; // 20 is arbitrary, but it's big enough for the strcat
char b[] = "Surname";
strcat(a, b);

d阵列也是如此

这可以在文档中阅读

char * strcat ( char * destination, const char * source );

[参数destination是一个]指向目标数组的指针,该数组应该包含一个C字符串,并且足够大,可以包含串联的结果字符串。

始终阅读您正在使用的函数的文档。

相关内容

  • 没有找到相关文章

最新更新