2013-11-09 6 views
0

Мне была назначена задача создания программы для сортировки строки (без использования указателей, потому что нас пока не изучали). Но я застрял, и мне нужна небольшая помощь. Это то, что у меня есть до сих пор:Сортировка строк в C

#include <stdio.h> 

int main() 
{ 
    printf("Enter text to be sorted alphabetically:\n"); 
    char a[100][100]; // This is my array of text. 
    // It has a maximum of 100 words, each with 100 characters. 
    int i = 0; 
    while(scanf("%c", a[i][100]) != EOF) 
    { 
      i++; // This is where I get the string from the user. 
      // I think this is where the problem is. 
    } 
    int l, x, j, m = 0; 
    char k[100]; // This is the swap variable for the bubble sort. 
    for(l = 0; l < i; l++) 
    { 
      for(j = 0; l < i - l; j++) 
      { 
        if(a[j][m] > a[j+1][m]) 
        { 
          for(x = 0; x < 100; x++) 
          { 
            k[m] = a[j][m]; // Bubble sort. 
            a[j][m] = a[j+1][m]; 
            a[j+1][m] = k[m]; 
          } 
          m = 0; // m is set back to 0. 
        } 
        if(a[j][m] == a[j+1][m]) 
        { 
          m++; // m is supposed to represent the mth letter. 
          // so if the first two letters are equal, it increases m. 
          j--; 
        } 
      } 
    } 
    printf("Sorted text is: /n"); 
    for(l = 0; l < i; l++) 
    { 
      for(j = 0; j < 100; j++) 
      { 
        printf("%s", a[l][j]); // Print out the final result. 
        // I think I messed up this one too. 
      } 
      printf("\n"); 
    } 
} 

Этот код отказывается компилироваться. В нем говорится:

format ‘%c’ expects argument of type ‘char *’, but argument 2 has type ‘int’ 

Может кто-нибудь сказать мне, что я делаю неправильно? Спасибо.

+1

На самом деле слово 'int' в ошибке может быть важным. Вы уверены, что у вас есть 'char a [100] [100]'? Может ли это быть 'int a [100] [100]'? –

ответ

1

Для строк, формат зсапЕ спецификатор %s

scanf ("%s" ... 

и вы должны указать адрес, где хранить строку

&a[i][0] 

и добычу никто не вводит более 99 символов :)

+0

& '(a [i] [0])' или просто 'a [i]' должен работать. –

+0

Спасибо. Это сработало красиво. Код все еще не работает правильно, но я решил свою ошибку. Я могу взять это отсюда. – user2973526

+0

@ user2973526: Добро пожаловать в Stackoverflow! Вскоре прочитайте страницу [About] (http://stackoverflow.com/about). На данный момент прочитайте [Help! Кто-то ответил на мой вопрос!] (Http://meta.stackoverflow.com/help/someone-answers). – usr2564301

Смежные вопросы