2016-01-22 3 views
2

Я пробовал много вещей, но я просто не могу найти решение проблемы. Я пытаюсь распечатать содержимое массива один за другим, но он сработает. Как я могу сделать каждую распечатку соответствующего письма после каждой итерации?Печать писем из массива

main() { 
    int i; 
    char myArray[10]; 

    for(i = 0; i < 5; i++) { 
    myArray[i] = "a"; 
    printf("%s\n", myArray[i]); 
    } 

} 

Я также попытался:

printf("%c\n", myArray[i]) 

и:

printf("%d\n", (int)myArray[i]) gives me the numbers 36. 
+1

Вы используете спецификатор формата% s (string) для печати символа - tryn printf ("% c \ n", myArray [i]); – Nunchy

+3

Кроме того, вы назначаете строку одному символу, используя двойные кавычки «double», пробуйте одиночные кавычки для символа sngle - myArray [i] = 'a'; – Nunchy

+1

Что такое 'arr [i]'? Я не вижу объявленного (или инициализированного) 'arr' в любом месте. – e0k

ответ

1

Ради завершения, я чувствовал, что обязан указать на то, что даже return 0; ISN Я довольно официально, как я покажу ниже.

Кроме того, знаете ли вы, что вы выполняете итерацию только через 5, но объявили за 10?

-e0k

@ e0k Спасибо за меня внимание.Я, мне нужно немного поспать хехе

-Asperger

для того, чтобы вы запомнили перебирать ту же сумму индексов, как вы объявлены в массиве, вы должны #define вашу длину массива, как это:

#include <stdio.h> 
#include <stdlib.h> 

#define ARRAY_SIZE 10 

int main(void) // we're not using argc and argv 
{ 
    size_t i; // use size_t since i is used as an array index 
    char myArray[ARRAY_SIZE]; 

    for (i = 0; i < ARRAY_SIZE; i++) 
    { 
     myArray[i] = 'a'; 
     printf("%c\n", myArray[i]); 
    } 

    return EXIT_SUCCESS; // defined in stdlib.h 
} 
+0

Черт возьми! Принимал ваш новый ответ – Asperger

2
  1. arr является массив с элементами типа char - вы должны назначить 'а' к каждому элементу вместо «a» (последний дает вам некоторый адрес в памяти, а именно адрес, где хранится «a»).

  2. %s Используется для печати нулевой строки. Вместо этого используйте %c из-за типа элементов в вашем массиве.

PS. Лучше использовать основной, как это:

int main(void) 
{ 
    ... 
    return 0; 
} 
+0

вы можете удалить аранжировку. Я изменил имя и забыл его отредактировать. Исправлено уже – Asperger

+0

Добавление в одинарные кавычки хорошо выполнялось с помощью% c – Asperger

2
  1. Ваша главная функция не имеет возвращаемого значения. Вам нужно использовать либо int, либо void.

  2. arr[i] = "a"; назначает строку с нулевым завершением до arr[i], вы хотите назначить символ.

  3. Что такое arr? Имя вашего массива - myArray!

  4. printf("%s\n", myArray[i]); будет интерпретировать myArray[i] как строку, но это символ.

Это исправленная программа:

int main() 
{ 
    int i; 
    char myArray[10]; 

    for (i = 0; i < 5; i++) 
    { 
     myArray[i] = 'a'; 
     printf("%c\n", myArray[i]); 
    } 
} 
+0

Работает, когда я делаю myArray [i] = 'a'; printf ("% c \ n", myArray [i]); – Asperger

+0

Хорошо, мой компилятор также позволяет мне оставить возвращаемое значение, однако вы действительно должны добавить возвращаемое значение в main, в противном случае это очень уродливое – hgiesel

+0

вы имеете в виду return 0? – Asperger

-1

Это все так просто:

#include <string.h> 
#include <stdio.h> 

main() { 
    char myArray[10]; 
    memset(myArray, 'a', 5); 
    myArray[5] = '\0'; 
    for(char *c = myArray; *c; ++c) { 
     putchar_unlocked(*c); 
     putchar('\n'); 
    } 
} 
Смежные вопросы