#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void clearscreen()
{
system("cls");
}
int main()
{
int b1,b,c;
char data[20];
int number,a;
printf("How many data do you want to store ");
scanf("%d",&number);
for(a=1;a<=number;a++)
{
printf("Input your data No_%d: ",a);
scanf("%s",&data[a]);
}
return 0;
}
我的问题是:存储数据后,如何查看? 例如我存储2个数据。 nxt 是我想查看这 2 个数据。 有人可以给我一个示例代码吗?
最佳答案
您当前的代码可以编译,但它从根本上是错误的:char
是一种可以存储单个字符而不是整个字符串的类型。因此,&data[a]
将指向先前使用的字符串的子字符串,每个后续的子字符串都会覆盖先前输入的部分。
不幸的是,C 中的字符串操作远比这复杂 - 您需要一个 2D 数组或指针数组才能正确完成任务:
char *data[20];
...
for(a=1;a<=number;a++)
{
char buf[101];
printf("Input your data No_%d: ",a);
scanf("%100s", buf); // 100-char limit, no ampersand!
data[a] = malloc(sizeof(char)*(strlen(buf)+1));
strcpy(data[a], buf);
}
现在您可以打印了:
for(a=1;a<=number;a++)
{
printf("Your data No_%d: is %s\n",a, data[a]);
}
最后,您必须释放已分配的数据:
for(a=1;a<=number;a++)
{
free(data[a]);
}
关于c - 如何查看存储的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12881933/