#include<stdio.h>
#include<string.h>
#define ROWS 6
#define LENGTH 30
int main (void)
{
int wordcount[ROWS]; // Incraments word count. i.e. Word 1, Word 2, Word 3...
char word[LENGTH]; // Stores users string
for(int i = 1; i < ROWS; i++)
{
if(i == 1)
{
printf("Word %d: ", i);
scanf("%d %s", &wordcount[i], &word[0]); // Input ends here. Prints out the rest of the array with "no" values.
i++;
}
if(i == 2)
{
printf("Word %d: ", i);
scanf("%d %s", &wordcount[i], &word[1]);
i++;
}
if(i == 3)
{
printf("Word %d: ", i);
scanf("%d %s", &wordcount[i], &word[2]);
i++;
}
if(i == 4)
{
printf("Word %d: ", i);
scanf("%d %s", &wordcount[i], &word[3]);
i++;
}
if(i == 5)
{
printf("Word %d: ", i);
scanf("%d %s", &wordcount[i], &word[4]);
}
break;
}
return 0;
}
我尝试了多次循环,改变了语法和位置,但是没有任何东西对我有意义。除了scanf()
、printf()
、fgets()
或strlen()
之外,我不允许使用指针、全局变量或任何其他库函数。我必须创建多个函数来获取用户输入,反转字符串,看看它是不是回文...但我好像过不了第一部分。
2条答案
按热度按时间ippsafx71#
几个问题...
1.索引应从0开始,* 而不是 * 1
word
数组必须是2D(* 而不是 * 1D)1.也就是说,您需要一个单词 * 数组 *,其中包含
ROWS
个单词,每个单词最多可以包含LENGTH
个字符。1.一个简单的循环可以获取所有单词,而不需要任何
if
语句1.最好使用
fgets
和strlen
,而不是scanf
来进行输入,您可以 * 提示 * 用户下面是重构后的代码:
5sxhfpxr2#
我可以通过不输入整数而只输入字符串来重现这个问题。这意味着
scanf()
在第一次和随后的尝试中都会失败。下面是一个简化的程序版本,带有错误检查功能:和运行示例:
从问题描述中不清楚您试图对word执行什么操作,但可能是不正确的,因为您将字符串写入word的位置0,然后将下一个word 2写入位置1(覆盖部分word 1),等等。您实际上是指单词计数还是单词中的字母计数?对于后者,请使用
strlen()
。