#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
char *array[3];
scanf("%s",----); // The input is james.
return 0;
}
如何将james作为输入存储在数组[1]中,以便它等同于array[1] = "james";
?所以问题是我必须把几个字符串作为输入,然后我想将它存储在一个数组中,以便像我一样存储array[1] = "James";
如果可能,请提供代码。
答案 0 :(得分:1)
你可能想要类似的东西:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char array[3][10]; // array of 3 strings of at most 9 chars
scanf("%s", array[0]);
scanf("%s", array[1]);
printf("%s\n%s\n", array[0], array[1]);
return 0;
}
或者通过动态分配内存:
int main() {
char *array[3];
array[0] = (char*)malloc(10); // allocate space for a string of maximum 9 chars
array[1] = (char*)malloc(10); // allocate space for a string of maximum 9 chars
// beware: array[2] has not been initialized here and thus cannot be used
scanf("%s", array[0]);
scanf("%s", array[1]);
printf("%s\n%s\n", array[0], array[1]);
return 0;
}
免责声明:为简洁起见,此处绝对没有错误检查。如果输入的字符串超过9个字符,则此程序的行为将不确定。
预测下一个问题:尽管为10个字符保留空间,我们只能存储最多9个字符长度的字符串,因为NUL
字符串终止符需要一个字符。
答案 1 :(得分:1)
您应该做的是scanf("%s", array[1]);
,但由于array[1]
是非初始指针,因此您应首先malloc()
array[1] = malloc(length_of_your_string_plus_NUL_char);
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
char *array[3];
array[1] = malloc(100); // I used a large number. 6 would suffice for "James"
scanf("%99s", array[1]); // The input is james. Note the "99" (string width) addition that ensures you won't read too much and store out of bounds
return 0;
}