gpt4 book ai didi

arrays - 为什么我的数组中没有打印字符串?

转载 作者:行者123 更新时间:2023-12-05 01:05:18 28 4
gpt4 key购买 nike

#include<stdio.h>
int main()
{
char arr[100], i;
int n;

printf("Enter the size of the Array: ");
scanf("%d", &n);

printf("\nEnter the Strings in the Array\n");
for(i=0; i<n; i++)
{
scanf("%s", &arr[i]);
}

for(i=0; i<n; i++)
{
printf("%s", arr[i]);
}
return 0;
}

为什么在输入字符串变量后这段代码的执行就停止了?为什么不打印数组中的字符串?

最佳答案

您每次都覆盖相同的字符串,但在每次迭代时在数组中开始一个更深的字符串。当数组的大小为 4 时,您可以更容易地看到问题。

  char arr[4], i;
int n = 4;

printf("\nEnter the Strings in the Array\n");
for(i=0; i<n; i++)
{
scanf("%s", &arr[i]);
}

现在,当您第一次输入超过 3 个字符的字符串时,您的应用程序会出错。第二次超过2个字符是因为你从同一个字符串开始+1个字节。 arr + 1的地址。

第三次只有1个字节仍然有效,等等

将您的数组更改为 char arr[100][100];然后你有 100 个 100 个大数组的 char 数组。同时从 scanf 中删除 & 符号,因为此时 arr[i] 已经是一个地址。

scanf("%s", arr[i]);

同:

scanf("%s", &arr[i][0]);

关于arrays - 为什么我的数组中没有打印字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70706466/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com