有关如何在数组中插入字符串的问题

时间:2014-10-31 17:26:50

标签: c arrays string

我必须做一个练习,我需要从键盘获取一个文本,最多1000行,每行最多有100个字符。

当用户输入带有" END"字的行时,我还需要完成输入的获取。并且我必须显示所有获得的行而不使用" END"行,以及所使用的所有字母数字字符,最后是使用过的单词总数。

我试图通过数组从键盘获取行,但是用于添加行的for循环不起作用,实际上循环在第一次调用后结束。

我认为这是因为阵列已经填满,但我不知道为什么以及如何修复它。

这是我的代码:

#include <stdio.h>
#define MAX_ROWS 1000
#define MAX_CHARACTERS 100

int main() {
int i;
char text[MAX_CARACTERS];

for(i=0;i<MAX_ROWS && text!="END";i++) {

scanf("%98[^\n]",text);

}




return 0;   
}

3 个答案:

答案 0 :(得分:2)

在C语言中,您必须使用strcmp来比较字符串:

for(i=0; (i < MAX_ROWS) && strcmp(text, "END"); i++)

答案 1 :(得分:1)

你从未在text中读到任何内容;但我假设这里的testo意味着text

您不会将C字符串与==进行比较 - 这只会测试两个指针是否指向同一个地址。你想要strcmp()

char text[MAX_CARACTERS] = "";

for (i = 0; (i < MAX_ROWS) && (strcmp(text, "END") != 0); i++) {
  scanf("%98[^\n]",text);
}

答案 2 :(得分:0)

您可能还想考虑使用strncmp

char text[MAX_CHARACTERS] = {0};

for (i = 0; i < MAX_ROWS && strncmp(text, "END", 3) != 0; i++) {
  scanf("%98[^\n]",text);
}

或字节序列比较,memcmp(不是优雅的人会说)

char text[MAX_CHARACTERS] = {0};

for (i = 0; i < MAX_ROWS && memcmp(text, "END", 3) != 0; i++) {
  scanf("%98[^\n]",text);
}