我是 C的新手,我想知道是否可以从键盘<字符串\n
写入字符串< / strong>使用scanf()
函数。
我使用的代码是:(对不起意大利变量词)
void riempi_array_stringhe (char* stringhe[], int lunghezza_array)
{
for (int i = 0; i < lunghezza_array; i++) {
stringhe[i] = (char*) malloc(sizeof(char) * 100);
printf("Insert a new string: ");
scanf("%s", stringhe[i]);
}
}
我尝试输入shift + enter,alt + enter,或插入\ n作为输入,但根本不起作用。
提前致谢!
答案 0 :(得分:3)
有一个[
说明符。引自scanf(2)
[
- 匹配指定的一组接受字符中的非空字符序列;下一个指针必须是指向char的指针,并且字符串中的所有字符必须有足够的空间,加上一个终止的空字节。
示例:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str[10];
for (int i = 0; i < 10; i++) {
str[i] = (char *)malloc(sizeof(char) * 100);
printf("Insert a new string: ");
scanf("%[^~]", str[i]);
printf("Your input: %s\n", str[i]);
}
return 0;
}
要结束输入,我们应输入~
然后Enter
或按Ctrl+D
(EOF)。我们可以指定其他字符来终止输入。例如,scanf("%[^X]", str[i]);
将在用户插入X
然后Enter
后终止输入。
请注意,为防止缓冲区溢出,应始终指定序列的width
等于缓冲区大小减1(对于NUL
字符),即:
scanf("%99[^~]", str[i]); // read no more than 99 symbols + NUL