gpt4 book ai didi

字符数组显示为空,试图附加第二个字符串

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:09 28 4
gpt4 key购买 nike

我只想在一个字符数组中存储(追加/连接)三个手机号码。在 for 循环中,我给出了三个手机号码。我写了一个函数来存储手机数字。 char 数组通过打印数组变量的长度来存储第一个手机号码。当我尝试存储第二个手机号码时,char 数组变为空(数组的长度为零)。实际上,变量数组“auth_mob_no”索引是连续递增的 (j++),要获得第二个数字,需要将变量数组“mob_no”索引设置为零 (k=0)。为什么在我给出第一个字符串后不存储字符串?

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

char mob_auth(char mob_no[]);
int i,j=0,k=0;

int main()
{
char num[15];
for(i=0;i<3;i++)
{
scanf("%s",num);
if(mob_auth(num))
{
printf("Mobile Number stored\n");
}
}
return 0;
}

char mob_auth(char mob_no[])
{
char auth_mob_no[50];
while(mob_no[k]!='\0')
{
auth_mob_no[j]=mob_no[k];
k++;j++;
}
auth_mob_no[j]='\0';
k=0;
printf("len:%d\n",strlen(auth_mob_no));
return 1;
}

输出:

    input by user: +919999999999
len:13
Authicated Mobile Number

input by user: +918888888888
len:0
Authicated Mobile Number

最佳答案

auth_mob_no 是自动变量,因此它的内容将在退出其范围时消失(在这种情况下从 mob_auth 返回)。

要更正,请执行以下任一操作:

  • char auth_mob_no[50] 之前添加 static
  • 删除局部变量 auth_mob_no 并使其成为全局变量,就像您对 jk
  • 所做的那样

另请注意 printf("len:%d\n",strlen(auth_mob_no)); 行将通过传递错误类型的数据来调用未定义的行为 printf().

使用正确的格式说明符

printf("len:%zu\n",strlen(auth_mob_no));

或者在传递之前转换数据(因为在这种情况下长度会足够小)

printf("len:%d\n",(int)strlen(auth_mob_no));

关于字符数组显示为空,试图附加第二个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40688639/

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