현재 목록을 알파벳순으로 표시하려고 시도하고 있습니다. 정렬 할 단어 수가 들어있는 줄을 사용자가 입력하려고합니다. 다음 줄마다 새로운 단어를 입력하게됩니다. 단어에는 공백이 포함되지 않으며 라인 리턴으로 끝납니다. scanf
또는 fgets
을 사용하여 모든 것을 읽을 수있는 쉬운 방법은 알고 있지만 내 마이크로 프로세서는 이러한 기능을 처리하여 getchar()
을 사용할 수 없습니다. 현재 정렬 된 목록을 인쇄 할 때 그냥 쓰레기를 인쇄합니다. 내 코드에 문제가있는 것처럼 느껴지지만 프로그래밍에 익숙하지 않고 알아낼 수 없습니다. 어떤 도움을 주셔서 감사합니다. ,getchar을 사용하여 목록을 알파벳순으로 배열하는 방법
if (ch == 0x0D)
{
string[i][j] = '\0';
printf("\n\r");
}
둘째, 당신은 한 번에 문자를 읽고됩니다. 먼저
#include <stdio.h>
#include <string.h>
int main()
{
int i, j;
char string[10][20], temp[20];
int num;
while(1)
{
char ch = getchar();
if(ch == 0)
continue;
if(ch <= 0x39 && ch >= 0x30)
{
putchar(ch);
num = ch - 0x30;
}
if(ch == 0x0D)
printf("\n\r");
if (ch <= 0x7A && ch >= 0x61)
{
putchar(ch);
for(i=0; i<=num; i++)
{
for(j=0; j<=20; j++)
string[i][j] = ch;
}
}
if(ch== 0x20)
break;
}
for (i = 0; i < num - 1 ; i++)
{
for (j = i + 1; j < num; j++)
{
if (strcmp(string[i], string[j]) > 0)
{
strcpy(temp, string[i]);
strcpy(string[i], string[j]);
strcpy(string[j], temp);
}
}
}
printf("\nSorted Names\n");
for (i = 0; i < num; i++)
{
printf("%s\n", string[i]);
}
return 0;
}
'j <= 20'이고 친구들은'j <20'이어야합니다. 끝이 1 씩 벗어나는 것을 피하십시오. 그리고 당신은 당신의 문자열을 널 종료하지 않고 있습니다. 첫 번째'for' 루프는'char' 배열을 모두 같은 문자로 채 웁니다. 어떤 종류의 마이크로 프로세서가'scanf()'와'fgets()'를 "처리 할 수 없습니까?" –
매우 작은 하나 – pm100
C 런타임이 없기 때문에 작지는 않습니다. * 아무것도 넣지 않았을 정도로 작습니다 *. 얼마나 이상합니다. 어쨌든이 마이크로 프로세서는 무엇입니까? – WhozCraig