gpt4 book ai didi

c - 带空格的字符串上的 scanf 问题

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

我在 C 中有这个简单的代码来扫描和打印带有空格的字符串:

#include <stdio.h>
#include <string.h>
int main()
{
char myName[50];
printf("Enter your name: ");
scanf("%[^\n]s", &myName);
printf("Your name is: %s", myName);
return 0;
}

编译器(gcc,我的 mac 上 Xcode 附带的命令行工具的一部分)返回此错误:

name.c: In function ‘main’:
name.c:7: warning: format ‘%[^
’ expects type ‘char *’, but argument 2 has type ‘char (*)[50]’
name.c:7: warning: format ‘%[^
’ expects type ‘char *’, but argument 2 has type ‘char (*)[50]’

这里有什么问题?

注意:我需要使用 scanf。我没有 fgets :(

最佳答案

您应该传递给 scanf 类型为 char* 的参数(格式 %[^\n]s 期望如此),但是在您的代码:

char myName[50];
scanf("%[^\n]s", &myName);

您传递了 myName 数组的地址(即 char (*)[50])。您应该将其更改为:

scanf("%[^\n]", myName);

或:

scanf("%[^\n]", &myName[0]);

关于c - 带空格的字符串上的 scanf 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19059318/

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