【发布时间】:2016-10-21 14:58:41
【问题描述】:
我想扫描一个字符串并将char指针指向这个扫描的字符串。
int main(int argc, char *argv[]) {
char *string;
scanf("%s",&string);
printf("%s\n",string);
}
但是给出警告说
警告:格式“%s”需要“char *”类型的参数,但参数 2 有类型'char **'
如何扫描char * 中的字符串而不出现警告。
编辑:它适用于带有警告的以下代码,我将其深入到上面的代码中,以便非常具体。
int main(int argc, char *argv[]) {
int n = 2;
char *strings[2];
for(int i = 0; i < n; i++){
scanf("%s",&strings[i]);
printf("%s\n",&strings[i]);
}
}
【问题讨论】:
-
先为字符串变量分配内存,然后只传递
string而不是&string。 -
换句话说,当您还没有弄清楚如何分配内存缓冲区时,您正在询问如何使编译器错误消失。
-
... 或使用固定长度的字符串。这取决于您打算阅读的内容。
-
当你说“这有效”时,这是否意味着你实际测试过它?因为除了崩溃,我什么也没看到。
-
@interjay 你很可能是正确的,但是,它是 UB .....