在C编程中反转数组

在C编程中反转数组

我一直在写一段代码我需要使用argc和argv[]参数接收N个输入然后输入的N个数字将允许用户输入那么多的句子对于每一个句子,我的代码应该颠倒句子中的每个单词目前,我的代码将接受N值和句子,但不会打印相反的句子相反,它会打印一个空行。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define SIZE 80

void get_input(char *line){
 fgets(line, SIZE, stdin);
 char *ptr = strchr(line, '\n');
 if (ptr){
     *ptr = '0'; }
}

 void reverse(char *line){
 char copy[SIZE];
 char word[SIZE];
 memset(copy, 0, SIZE);
 int line_len = strlen(line);
 int word_len = 0;
 int i;
 for(i=line_len; i<=0; --i){
     if(line[i] == ' ' && word_len > 0){
        memset(word, 0, SIZE);
        strncpy(word, line + i + 1, word_len);
        strcat(copy, word);
        strcat(copy, " ");
        word_len = 0;
     }else if(isalnum(line[i]) || line[i] == '\'')
          {word_len++;}
  }
  if(word_len>0){
     memset(word, 0, SIZE);
     strncpy(word, line, word_len);
     strcat(copy, word);}
     strcpy(line, copy);
}

int main(int argc, char *argv[]){
 int N = (int)strtol(argv[1], NULL, 10);
 if(N<0){
         printf("ERROR: Please provide an integer greater than or equal to 0\n");
         return 0;
        }
 if(N>SIZE){ printf("ERROR: Please provide an integer less than or equal to 80\n");
             return 0;
           }
     char line[SIZE];
     int i;
     for(i=0;i<N;i++){
                      get_input(line);
                      reverse(line);
                      printf("%s\n", line);
                     }
 return 0;
}

输入示例:

狐狸跳过了一根圆木
所需输出示例:
一只跳起的狐狸
电流输出:

最佳答案

你把<=而不是>=

for(i = line_len; i <= 0; --i) {

关于c - 在C编程中反转数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36393518/

10-11 04:36