我有这个C代码:
#include <stdio.h>
#include <stdlib.h>
int main(){
char *bitstr;
printf("Enter a bitstring or q for quit: ");
scanf("%s", &bitstr);
return 0;
}
我一直收到以下错误。我究竟做错了什么?
warning: format '%s' expects argument of type 'char *', but
argument 2 has type 'char **' [-Wformat]
答案 0 :(得分:1)
试试这个:
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int main(){
char bitstr[MAX] = "";
printf("Enter a bitstring or q for quit: ");
scanf("%s", &bitstr);
// or fgets(bitstr);
return 0;
}
尝试定义或分配字符串/字符数组的大小。
答案 1 :(得分:1)
char
中的scanf()
数组的传递地址,而不是char*
的地址。
2 确保您不会覆盖您的目标缓冲区
3 正确调整缓冲区需求。从其他帖子中可以看出,您需要int
的二进制文本表示。假设您的int
是8个字节(64位)。
#include <stdio.h>
#include <stdlib.h>
int main(){
char bitstr[8*8 + 1]; // size to a bit representation of a big integer.
printf("Enter a bitstring or q for quit: ");
//Change format and pass bitscr, this results in the address of bitscr array.
scanf("%64s", bitstr);
return 0;
}
我更喜欢fgets()&amp; sscanf()方法。
char buf[100]; // You can re-use this buffer for other inputs.
if (fgets(buf, sizeof(buf), stdin) == NULL) { ; /*handle error or EOF */ }
sscanf(buf, "%64s", bitstr);