gpt4 book ai didi

c - 2dstrings 和 strncmp

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

在我输入10个名字后,我必须打印所有以A开头的名字。它不打印任何内容

#include<stdio.h>
#include<conio.h>
#include<string.h>
void main(void)
{
int i;
char names[10][50];
printf("Enter 10 names:\n");
for(i=0;i<10;i++)
{
printf("Enter name %d\n",i+1);
gets(names[i]);
}
for(i=0;i<10;i++)
{
if(!(strncmp(names[i],"A",1)))
{
printf("%s",&names[i]);
}
}
getch();
}

最佳答案

除了一些问题(见下文)之外,代码看起来还不错。就我个人而言,我会改变

if(!(strncmp(names[i],"A",1))) 

if(names[i][0] == 'A') 

或者,甚至更好

if(tolower(names[i][0]) == 'a') // case-insensitive test; make sure ctype.h
// has been #included

尼特:

永远永远永远永远永远永远使用gets();它是不安全的,并且会产生一个很容易被恶意软件利用的安全漏洞。

改变

gets(names[i]);

fgets(names[i], sizeof names[i], stdin);

假装您从未听说过gets()

此外,请确保您的编译器文档明确指出“void main(void)”是有效签名;并非所有编译器都支持它(main 的标准签名是 int main(void)int main(int argc, char **argv))。

关于c - 2dstrings 和 strncmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3248653/

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