我被卡在一段我一直在工作的代碼上。我需要使用argc和argv []參數接收N個輸入。然後,N個輸入將允許用戶輸入那麼多句子。對於每一個句子,我的代碼都應該反轉句子中的每個單詞。目前,我的代碼將採用N值和句子,但不會打印相反的句子。相反,它會打印一個空行。在C編程中反轉數組
#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;
}
示例輸入:
狐狸躍過日誌
實施例所需的輸出:
日誌上跳下狐狸的
電流輸出:
「我的代碼做一切正常,但不打印反向句相反,它打印一個空行。」 - 因爲這是唯一的事情是應該做的,它確實*不*正確地做一切? – immibis
在我的文章中進行了編輯 – Shaunbaum