#arrays #c #string #output #character
#массивы #c #строка #вывод #символ
Вопрос:
Это мой код.
#include<stdio.h>
#include<string.h>
int main()
{
int n, i;
char ch[100];
scanf("%d", amp;n);
for(i = 0; i < n; i ){
scanf(" %c", amp;ch[i]);
}
printf("%sn", strupr(ch));
return 0;
}
Сначала я хочу взять размер массива символов в переменной n. После я хочу взять n символов и присвоить массив. Вывод, полученный из этой программы, правильный, но он также выдает некоторые значения мусора.
Например:
5
s d g h f
Output: SDGHFC└U▄■`
Как я могу игнорировать значения мусора из моего вывода?
Комментарии:
1. в c / cpp строка должна заканчиваться символом ‘ 0’, чтобы определить конец строки. вам нужно будет добавить его вручную после цикла с n-м индексом. имея это в виду, у вас будет граничный случай, когда сам ввод ‘n’ равен 100, и это приведет к результату, аналогичному тому, который вы получаете сейчас
2. Пожалуйста, попробуйте привести мне пример кодирования!!! Спасибо.
3. Пожалуйста, попробуйте привести мне пример кодирования!!! Спасибо.
Ответ №1:
Просто инициализируйте свой массив ch [] всеми нулями. Т.Е.
for (i = 0; i < 100; i = 1) { ch[i] = ''; }
Поместите эту строку сразу после объявления ch[] .
Комментарии:
1.
char ch[100];
—>char ch[100] = { 0 }
илиchar ch[100] = ""
сделал бы то же самое, что и инициализация .for()
Цикл является более поздним назначением .
Ответ №2:
При чтении символов пробелы, которые вы вводите при вводе, также будут рассматриваться как символы, и strupr (c) выдаст несколько неаккуратный вывод, также вам придется вручную указать нулевой символ в конце вашего массива символов. Приведенная ниже программа может помочь вам найти нужный ответ
#include<stdio.h>
#include<string.h>
int main()
{
int n, i;
scanf("%d", amp;n);
fflush(stdin);
char ch[100];
for(i = 0; i < n; i ){
char temp;
scanf("%c", amp;temp);
if(temp != 'n')
ch[i] = temp;
else
break;
}
ch[n] = '';
printf("%sn", strupr(ch));
return 0;
}
Ваш ввод должен выглядеть следующим образом
5
sdghf
Для ввода с пробелами. Программа будет выглядеть следующим образом.
#include<stdio.h>
#include<string.h>
int main()
{
int n, i;
scanf("%d", amp;n);
fflush(stdin);
char ch[100];
char temp;
i = 0;
while(scanf("%c", amp;temp)){
if(temp == ' ')
continue;
if(temp != 'n')
ch[i ] = temp;
else
break;
}
ch[i] = '';
printf("%sn", strupr(ch));
return 0;
}
Теперь вы можете ввести свой символ в любом расположении по своему усмотрению.
Комментарии:
1. Есть ли какой-либо способ получить вводимый символ с помощью пробела?? Я имею в виду символ, затем пробел …. и так далее.
2.Есть ли какой-либо способ получить вводимый символ с помощью пробела?? Я имею в виду символ, затем пробел …. и так далее.
3. Да, вы можете это сделать, поэтому я редактирую свой ответ на ваш запрос.
4. Примечание:
fflush(stdin);
это UB.5. Большое вам спасибо. Я получил ответ. Но fflush (stdin) мне известен. Если вы знаете что-либо помимо этого, пожалуйста, опишите эту проблему.