我在CI中寫過這樣的程序,它每行按行讀取一個文件(每行只有一個字),對字母進行排序,然後在每個字符中顯示排序字和原始字線。對字符串中的字符進行排序的C程序
#include<stdio.h>
int main()
{
char line[128];
int i=0;
int j;
int length;
while(fgets(line,sizeof line,stdin) != NULL)
{
char word[128];
for (i=0; line[i] != '\0'; i++)
{
word[i]=line[i];
}
while (line[i] != '\0')
i++;
length=i;
for (i=length-1; i >=0; i--)
{
for (j=0; j<i; j++)
{
if (line[j] > line[i])
{
char temp;
temp = line[j];
line[j] = line[i];
line[i]=temp;
}
}
}
printf("%s %s",line,word);
}
return 0;
}
我編譯並運行它使用下面的bash命令。
gcc -o sign sign.c
./sign < sample_file | sort > output
原始文件(sample_file)看起來是這樣的:
computer
test
file
stack
overflow
輸出文件是這樣的:
ackst stack
cemoprtu computer
efil file
efloorvw overflow
er
estt test
ter
ter
我有兩個問題:
- 輸出文件在開始處有一堆換行符(即。abou t 5-7實際文字開始前的空白行)
- 爲什麼在最後打印'ter'兩次?
PS - 我知道這些都是非常基本的問題,但是我只是剛開始使用C/bash進行一個類的工作,而且我不確定哪裏出錯。
你允許使用'string.h'函數嗎?因爲使用'strlen'和'strcpy'會更簡單。目前,在複製之後,你並不是NUL-teriminating'word'。 – 2010-10-14 02:18:36
我想我可以使用 – xbonez 2010-10-14 02:35:34
這個作業嗎?你可能想標記它。如果是這樣,可惜你只限於C,它會成爲其他幾種語言的單行語言。 – Daenyth 2010-10-14 02:41:20