我用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*
参数(format%[^\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/