比字符串数组输出更多的结果
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]);
答案
\n
和printf
时添加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']
以上是关于比字符串数组输出更多的结果的主要内容,如果未能解决你的问题,请参考以下文章