我尝试将字符串读入数组,直到用户输入标记字符串,即" XXX"。
我不希望存储在数组中的sentinel值。如何避免将sentinel值放入数组?
这是我到目前为止所拥有的:
#include <stdio.h>
#include <string.h>
#define MAXCHAR 15
typedef char string15[MAXCHAR+1];
void
getInputs(string15 word[], int *nElem)
{
int i=0;
while(i<30 && strcmp(word[i-1], "XXX")!=0)
{
printf("Input word %d: ", i+1);
scanf("%s", word[i]);
i++;
if(i<=8 && strcmp(word[i-1], "XXX")==0)
{
printf("Below Minimum Count\n");
printf("Input word %d: ", i);
scanf("%s", word[i-1]);
}
}
(*nElem)=i-1;
}
int main()
{
int nElem;
string15 word[30];
getInputs(word, &nElem);
return 0;
}
答案 0 :(得分:1)
尝试尽可能少地编辑代码,同时使其有意义......
void getInputs(string15 word[], int *nElem)
{
int i = 0;
char buffer[128];
while(i<30)
{
printf("Input word %d: ", i+1);
fgets(buffer, 128, stdin);
if (strcmp(buffer, "XXX\n") != 0) {
strncpy(word[i], buffer, 15);
i++;
} else {
if (i<=8) {
printf("Below Minimum Count\n");
continue;
} else {
break;
}
}
}
(*nElem) = i;
}
老实说,还有其他设计问题。例如,为什么函数不返回添加的字符串数,而不是修改传递指针的整数?