[英]ANSI C problem with dynamic array and scan string
我在 ANSI C 中遇到了這個小程序的問題。我想制作一個具有三個功能的程序 - 創建一個動態數組(stworz_tablice),加載數據 - 字符串(pobierz_tablice)並打印它(wypisz_tablice)。
所以程序是這樣工作的:我們給我們的數組一個數字,放一個字符串,函數應該把它寫在控制台上。 例如,輸入:4 Fire
如何更正代碼以使其正常工作?
我認為問題在於mytab = stworz_tablice(n);
,但我還不知道如何修復它。
當我執行程序時,它不需要字符串。 輸出就像一些隨機數而不是字母。
輸入:
4
安娜
我想要的輸出:
安娜
我每次得到的輸出:
-24244 -24242 0 0 // 一些隨機數,每次都不同
#include <stdlib.h>
char *stworz_tablice(int n)
{
char *mytab = (char*)malloc((n+1) * sizeof(char));
if (mytab == NULL)
{
perror("Error in malloc");
exit (1);
}
return mytab;
}
void pobierz_tablice(char *mytab, int n)
{
scanf ("%s", mytab);
}
void wypisz_tablice(char mytab[], int n)
{
for(int i=0; i<n; i++)
printf("%c",mytab[i]);
}
int main(void)
{
int *mytab;
int n;
scanf("%d", &n);
if (n<=0)
{
printf("BŁĄD");
return 0;
}
mytab = stworz_tablice(n);
pobierz_tablice(mytab, n);
wypisz_tablice(mytab, n);
putchar('\n');
free(mytab);
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
char *stworz_tablice(int n)
{
char *mytab = malloc(n+1);
if (mytab == NULL)
{
perror("Error in malloc");
exit (1);
}
return mytab;
}
int pobierz_tablice(char *mytab, int n)
{
return scanf ("%s", mytab);
}
void wypisz_tablice(char mytab[], int n)
{
for(int i=0; i<n; i++)
printf("%c",mytab[i]);
}
int main(void)
{
char *mytab;
int n;
scanf("%d", &n);
if (n<=0)
{
printf("BŁĄD");
return 0;
}
mytab = stworz_tablice(n);
if(pobierz_tablice(mytab, n) != 1)
{
perror("Scanf error\n");
exit (1);
}
wypisz_tablice(mytab, n);
putchar('\n');
free(mytab);
return EXIT_SUCCESS;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.