我是新程序员。你能帮我解释一下为什么这个 C 测试程序不起作用吗?它应该是一个修剪功能:
#include <stdio.h>
#define MAX 1000
void main(){
char line[MAX];
int lgh;
line[0] = '\0';
while ((lgh = getLine(line, MAX)) != 0){
printf("%s", line);
line[0] = '\0';
}
}
int getLine(char s[], int length){
char s2[length];
int i, ii, qttWord = 0, qttWord2 = 0;
int c; // c = getchir() d = EOF
int flag = 2;
s2[0] = '\0';
/*Reads the input and puts it into s[], then, verifies if the input is just \n,
* if so, returns 0(i), if not, puts '\n' at the end of the string ind '\0' to close
*/
for (i = 0; i < length-1 && (c = getchar()) != EOF && c != '\n'; ++i){
s[i] = c;
++qttWord;
}
if (i == 0){
if (c == '\n')
return 0;
} else if (c == '\n'){
s[i] = c;
++qttWord;
++i;
s[i] = '\0';
}
fflush(stdin);
/*Verifies if the string is just ' ' or '\t'
* if so, returns 0
*/
for (i = 0; i <= qttWord && flag != 1; ++i){
if (s[i] == ' ' || s[i] == '\t'){
flag = 0;
} else{
flag = 1;
}
}
if (flag == 0)
return 0;
/*
*The trim function
*/
for (i = 0; i < qttWord; ++i){
if (i < qttWord-1){
if (s[i] == ' ' && s[i+1] != ' '){
s2[i] = s[i];
++qttWord2;
printf("1%d\n", s2[i]);//test thing
}
}
if (s[i] != ' '){
s2[i] = s[i];
++qttWord2;
printf("0%d\n", s2[i]);//test thing
}
}
s[0] = '\0';
s2[qttWord2+1] = '\0';
printf("Q:%d\n", qttWord2);//test thing
printf("A:%s\n", s2);//test thing
for (i = 0; i < qttWord2+1; ++i){
s[i] = s2[i];
}
return 1;
}
正如你所看到的,我创建了一堆 printf 测试来看看它为什么不起作用,但它没有帮助。我不明白为什么它不起作用。