比字符串数组输出更多的结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比字符串数组输出更多的结果相关的知识,希望对你有一定的参考价值。

我正在尝试解决问题。您可以在代码中忽略该问题。我的疑问是,如果我将t的值设为2,尽管我只运行t次循环进行输出,但数组仍输出3个字符串。

#include<stdio.h>
#include<string.h>

int main(void)
  int t;
  int i;
  int j;
  int n;
  int c;
  int temp;
  char result[30][3];
  int flag;
  scanf("%d", &t);
  for(i = 0; i < t; i++)
    flag = 0;
    scanf("%d", &n);
    scanf("%d", &c);
    for(j = 0; j < n; j++)
      scanf("%d", &temp);
      if(c > temp)
      c = c - temp;
     else
      flag = 1;
    
    
    if(flag == 0)
      strcpy(result[i], "Yes");
     else
      strcpy(result[i], "No");
    
  

  for(i = 0; i < t; i++)
    printf("%s", result[i]);
  

答案

\nprintf时添加result[i],则实际上会输出2个字符串。例如,如果先strcpy(result[0], "Yes"),然后是strcpy(result[0], "No"),则将得到如下输出:

YESNO

实际上,result的存储如下:

结果[0]:['Y'] ['e'] ['s']

结果[1]:['N'] ['o'] ['\ 0']

由于输出二维数组连续存储在内存中并且字符串以result[0]结尾,因此输出\0时会得到“是”。

作为另一个示例,如果您strcpy(result[0], "Hello"),那么当您输出result[0]时,您会得到

你好

并且当您输出result[1]时,您会得到

LO

由于result中的存储如下:

结果[0]:['H'] ['e'] ['l']

结果[1]:['l'] ['o'] ['\ 0']

以上是关于比字符串数组输出更多的结果的主要内容,如果未能解决你的问题,请参考以下文章

为啥 python np 数组输出中有更多的字符串? [复制]

处理产生奇怪结果的字节数组的字符串构造函数[重复]

PHP如何循环输出的字符串转换为数组

JS数组对象Array方法

为啥一根长字符串比许多小字符串占用更多空间?

JS里面怎么把一个数组转化成字符串