Итак, моя цель - создать структуру и дать ей некоторые значения через входную функцию и вывести их через выходную функцию, по какой-то причине ее Выходные данные являются некоторыми скремблированными символами: -1 ░ùI & @ 0,000000C - У вас возникли проблемы с вводом/выводом моей структуры, используя 2 функции
Любая помощь?
P.S просто отметить, когда у меня были мои входы (инструкции scanf) и вывод (printf statements) в функции scan_element, он работал нормально. но когда я разделил его между двумя функциями, он разместил скремблированные символы выше.
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct element_t {
int number;
char name[20];
char symbol[3];
char type[20];
float atomic_weight;
char shells[6];
};
void scan_element(struct element_t pl);
void print_element(struct element_t pl);
int main(int argc, char *argv[])
{
struct element_t pl;
scan_element(pl);
print_element(pl);
return 0;
}
void scan_element(struct element_t pl)
{
printf("number:");
scanf("%d",&pl.number);
printf("name:");
scanf("%s",&pl.name);
printf("symbol:");
scanf("%s",&pl.symbol);
printf("class:");
scanf("%s",&pl.type);
printf("atomic weight:");
scanf("%f",&pl.atomic_weight);
printf("shells use underscore for spaces :");
scanf("%s",&pl.shells);
}
void print_element(struct element_t pl)
{
printf("%d",pl.number);
printf("%s",pl.name);
printf("%s",pl.symbol);
printf("%s",pl.type);
printf("%f",pl.atomic_weight);
printf("%s",pl.shells);
}
Поиск ваших аргументов по * адресу * в ваших материалах. Ваш 'scan_element' не изменяет' p1' в main; это только изменение локальной переменной. Это невероятно распространенный вопрос для людей, которые просто изучают C, но, к сожалению, охота на дубликат является нетривиальной, так как вопросы настолько расходятся в содержании, что трудно связать их. Извини за это. – WhozCraig
Вам нужно передать указатель на переменную «pl», определенную в основном в двух функциях scan_element и print-element. Поэтому переопределите такие функции, как scan_element (struct element_t * pl) и получите доступ к полю типа pl-> name. – shamba
@WeatherVane no prob, –