gpt4 book ai didi

C 编程中的字符搜索

转载 作者:行者123 更新时间:2023-11-30 19:18:43 25 4
gpt4 key购买 nike

程序中有一个函数需要在字符串文件中搜索字符。在 main 中,声明了字符串,并通过用户输入设置值,如下所示:

char studentdata[40];
scanf("%s", &studentdata);

作为任务的一部分,用户将始终在字符串中间写入字符“/”,必须找到该字符。我的搜索代码:

int i=0;
char z = '/';
while (studentData[i]!=z)
{
i++;
}

studentData 是声明为

的函数的变量
char *studentData

这个想法是,在循环变量 i 包含字符 z 的位置之后,但程序永远不会跳出循环并崩溃。这可能是一个初学者的错误,因为我是新手......谢谢您的帮助!

最佳答案

首先,您需要将学生数据正确传递给 scanf()。使用:

scanf("%s", studentdata);

按照你的方式,你将一个指针传递给另一个指针。

使用#define来确定数组的大小总是明智的。您应该添加:

#define SDSIZE 40

并将您的数组声明为:

char studentdata[SDSIZE];

这使得维护更加容易。您会发现您需要在下面多个地方使用SDSIZE。这样,如果您需要更改大小,只需更改#define,而不是寻找使用它的所有位置并全部更改。

为了防止崩溃,您需要对索引变量 i 进行边界检查。为了防止其行为不当,您还需要监视字符串终止字符(空)。因此,您的循环应如下所示:

while( studentdata[i] != z && studentdata[i] != 0 && ++i < SDSIZE );

现在,当循环退出时,i 将包含找到 z 的索引,如果没有找到,它将等于 SDSIZE找到,或者如果没有找到,索引 (studentdata[i]) 处的值将为 null。像这样测试:

if( SDSIZE == i || studentdata[i] == 0 )
printf( "Not found\n" );
else
// do what you need to do with the result here.

这应该会给你你正在寻找的东西。

关于C 编程中的字符搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26433498/

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