gpt4 book ai didi

c - 读取用户输入并存储到数组时出错

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:04 25 4
gpt4 key购买 nike

我在运行这段代码时遇到了错误。一旦到达循环以扫描用户输入的名称(“scanf_s(%s”, &nameptr[i]); ),就会出现“程序停止工作”窗口。任何帮助或建议将不胜感激!

#include <stdio.h>
#include <string.h>
#define SIZE 10
int findTarget(char *target, char nameptr[SIZE][80], int size);

int main()
{
char nameptr[SIZE][80];
char t[40];
int i, result, size;
printf("Enter no. of names: ");
scanf_s("%d", &size);
printf("Enter %d names: ", size);


for (i = 0; i < size; i++)
scanf_s("%s", &nameptr[i]);

printf("Enter target name: ");
scanf_s("\n");
gets(t);
result = findTarget(t, nameptr, size);
printf("findTarget(): %d\n", result);

return 0;

}

int findTarget(char *target, char nameptr[SIZE][80], int size)
{
int i;
for (i = 0; i<size; i++) {
if (strcmp(nameptr[i], target) == 0)
return i;
}
return -1;
}

最佳答案

这个:

scanf_s("%s", &nameptr[i]); 

应该是

scanf_s("%s", nameptr[i], sizeof(nameptr[i])); 
/* Or better */
scanf_s("%79s", nameptr[i], sizeof(nameptr[i]));

scanf_s("%s", nameptr[i], _countof(nameptr[i])); 
/* Or better */
scanf_s("%79s", nameptr[i], _countof(nameptr[i]));

因为 scanf_s 中的 %s 需要第三个参数,表示所使用的字符串参数的最大大小。有关这方面的更多信息,请访问 msdn documentation of scanf_s

关于c - 读取用户输入并存储到数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32667425/

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