【发布时间】:2015-03-04 05:42:18
【问题描述】:
我有以下代码,我希望应该从文件中读取文本,将单词存储在数组中,然后以随机顺序打印出来。最终数组是 int,但应该是 char,它没有给我正确的答案。
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#include <time.h>
int main()
{
char message[10][150], buffer[150];
int i = 0;
int cntr = 9;
char freeArray[9];
srand(time(NULL));
freeArray[i] = rand() % cntr;
FILE *file_in;
file_in = fopen("test.txt", "r");
while (fgets(buffer, 150, file_in))
{
i = rand() % cntr;
strcpy(message[freeArray[i]], buffer);
}
while (cntr >= 0)
{
i = rand() % cntr;
strcpy(message[freeArray[i]], buffer);
freeArray[i] = freeArray[cntr--];
printf("%s", freeArray[i]);
}
return 0;
}
我有替代代码,但这个代码给了我没有随机播放的文本。
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#include <time.h>
int main()
{
/*declare and initialise variable*/
char message[10][150],buffer[150];
int i=0;
int j;
srand(time(NULL));
FILE *file_in;
file_in=fopen("test.txt", "r");
/*stores and prints the data from the string*/
while(fgets(buffer,150,file_in)){
strcpy(message[i],buffer);
}
while(i < 10)
{
j = rand() % 10;
printf("%s\n",message[j]);
i++;
}
return 0;
【问题讨论】:
-
它有助于为正确的编程语言添加标签:)
-
“它没有给我正确的答案” 太模糊了。什么是正确的答案,你得到了什么?
-
编译器说:第 23 行:数组下标的类型为 char。第 25 行:格式 %s 需要 char * 类型的参数,但参数 2 的类型为 'int'
-
最初,
freeArray[0]被分配一个随机数,其余未初始化。然后你读入每一行,将其分配给由freeArray随机选择的元素给出的message的索引。你有很多工作要做...... -
@lurker:实际上,任何高于 9 的索引都会有问题。