想知道如何在数组中存储不同的字符串。 例如,用户将输入'qwe',然后程序将其存储在数组变量[0]中。输入另一个字符串然后将其存储为变量[1],依此类推
int
main(int argc, char *argv[]) {
char variable[1000];
int i;
printf("enter a variable\n");
scanf("%s", variable);
for (i = 0; ??? ;i++) {
printf("The variable entered was: %s\n",variable[i]);
}
return 0;
我是C的新手,所以我不知道我在做什么。但这就是我到目前为止所提出的,并且想知道我是否可以得到一些帮助来填补其余部分 谢谢!
答案 0 :(得分:9)
您可以使用2D数组存储多个字符串。对于长度为100的10个字符串
char variable[10][100];
printf("Enter Strings\n");
for (int i = 0; i < 10 ;i++)
scanf("%100s", variable[i]);
最好使用fgets
来读取字符串。
fgets(variable[i], sizeof(variable[i]), stdin);
您还可以使用指向char
的指针数组来使用动态内存分配。
答案 1 :(得分:1)
variable[0]
刚刚存储了字符串的第一个字母。如果要在数组中存储多个字符串,可以使用 2D数组。
它有像
arr[3][100] = { "hello","world", "there"}
您可以将其作为
进行访问 printf("%s", arr[0]);
一个接一个。
答案 2 :(得分:0)
scanf返回成功的readed参数数量;
将二维数组用于字符串数组
永远不会超出界限数组
#include <stdio.h>
//Use defines or constants!
#define NUM_STRINGS 10
#define MAX_LENGTH_OFSTRING 1000
int main() {
char variable[NUM_STRINGS][MAX_LENGTH_OFSTRING +1 /*for '\0' Null Character */];
int i = 0;
printf("enter a variable\n");
while(scanf("%s", variable[i]) > 0){//if you print Ctrl+Z then program finish work. Do not write more than MAX_LENGTH_OFSTRING symbols
printf("The variable entered was: %s\n",variable[i]);
i++;
if(i >= NUM_STRINGS)
break;
}
return 0;
}
答案 3 :(得分:0)
最有效的方法是拥有一个字符指针数组,并根据需要为它们分配内存:
char *strings[10];
int main(int ac, char *av[]) {
memset(strings, 0, 10 * sizeof(char *));
for (int i = 0; i < 10; i += 1) {
char ins[100];
scanf("%100s", ins);
strings[i] = malloc(strlen(ins) + 1);
if (strings[i]) {
strcpy(strings[i], ins);
}
}
}