@SaddledSharp
Кодер. Увлекаюсь информационной безопасностью.

Как вернуть изменённый аргумент(массив) через функцию?

Здравствуйте, я что то жёстко тупить начал, мне нужно передать в аргумент массив и в этот массив добавить слово.
Суть программы: я должен сделать функцию которая будет возвращать имя ПК.
Код:
int main() {
	char NAME_PC[BUF];
	name_pc(NAME_PC);
	printf("%s", NAME_PC);
	return 0;
}

char name_pc(char ch[]) {
	char buffer[512];
	FILE *PC = popen("hostname", "r");
	if (PC != NULL) {
		while(fgets(buffer, 128, PC) != NULL);
	}
	else {
		printf("Error!");
	}
	return buffer + ch; // Тут и выбивает ошибку, как мне правильно это сделать?
	// Нужно вернуть измененный аргумент
}

Надеюсь вы поняли идею.
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега C
Седой и строгий
Указатель надо использовать
#include <stdio.h>
#include <stdlib.h>

#define BUF_SIZE 128

int name_pc(char* buf) {
  FILE *p = popen("hostname", "r");
  if (p == NULL)
    return 0;

  int r = 1;
  if (!fgets(buf, BUF_SIZE, p))
    r = 0;

  pclose(p);
  return r;
}

int main(int argc, char* argv[]) {
  char hostname[BUF_SIZE];

  if (!name_pc(hostname)) {
    fputs("Error!", stderr);
    return EXIT_FAILURE;
  }
  
  printf("%s\n", hostname);

  return EXIT_SUCCESS;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы