[{"data":1,"prerenderedAt":737},["ShallowReactive",2],{"doc:\u002Fex00":3},{"id":4,"title":5,"body":6,"description":730,"extension":731,"meta":732,"navigation":120,"path":733,"seo":734,"stem":735,"__hash__":736},"docs\u002Fex00.md","Ejercicio 00: ft_putchar",{"type":7,"value":8,"toc":716},"minimark",[9,13,20,82,88,93,209,218,222,229,241,264,270,273,333,348,354,363,416,445,454,461,471,475,488,492,575,579,671,674,682,689,693,704,712],[10,11,5],"h1",{"id":12},"ejercicio-00-ft_putchar",[14,15,16],"blockquote",{},[17,18,19],"p",{},"Escribe una función que muestre el carácter recibido como parámetro.",[21,22,23,36],"table",{},[24,25,26],"thead",{},[27,28,29,33],"tr",{},[30,31,32],"th",{},"Dato",[30,34,35],{},"Valor",[37,38,39,51,61,71],"tbody",{},[27,40,41,45],{},[42,43,44],"td",{},"Carpeta",[42,46,47],{},[48,49,50],"code",{},"ex00\u002F",[27,52,53,56],{},[42,54,55],{},"Archivo",[42,57,58],{},[48,59,60],{},"ft_putchar.c",[27,62,63,66],{},[42,64,65],{},"Prototipo",[42,67,68],{},[48,69,70],{},"void ft_putchar(char c);",[27,72,73,76],{},[42,74,75],{},"Funciones autorizadas",[42,77,78,79],{},"solo ",[48,80,81],{},"write",[17,83,84],{},[85,86,87],"em",{},"Hecho con amor para Laura, por Bogdan.",[89,90,92],"h2",{"id":91},"el-archivo","El archivo",[94,95,100],"pre",{"className":96,"code":97,"language":98,"meta":99,"style":99},"language-c shiki shiki-themes github-light github-dark","#include \u003Cunistd.h>\n\n\u002F*\n** Escribe un solo caracter en la salida estandar (file descriptor 1).\n** Es la unica funcion permitida por el enunciado para mostrar texto.\n*\u002F\nvoid    ft_putchar(char c)\n{\n    write(1, &c, 1);\n}\n","c","",[48,101,102,115,122,129,135,141,147,171,177,203],{"__ignoreMap":99},[103,104,107,111],"span",{"class":105,"line":106},"line",1,[103,108,110],{"class":109},"szBVR","#include",[103,112,114],{"class":113},"sZZnC"," \u003Cunistd.h>\n",[103,116,118],{"class":105,"line":117},2,[103,119,121],{"emptyLinePlaceholder":120},true,"\n",[103,123,125],{"class":105,"line":124},3,[103,126,128],{"class":127},"sJ8bj","\u002F*\n",[103,130,132],{"class":105,"line":131},4,[103,133,134],{"class":127},"** Escribe un solo caracter en la salida estandar (file descriptor 1).\n",[103,136,138],{"class":105,"line":137},5,[103,139,140],{"class":127},"** Es la unica funcion permitida por el enunciado para mostrar texto.\n",[103,142,144],{"class":105,"line":143},6,[103,145,146],{"class":127},"*\u002F\n",[103,148,150,153,157,161,164,168],{"class":105,"line":149},7,[103,151,152],{"class":109},"void",[103,154,156],{"class":155},"sScJk","    ft_putchar",[103,158,160],{"class":159},"sVt8B","(",[103,162,163],{"class":109},"char",[103,165,167],{"class":166},"s4XuR"," c",[103,169,170],{"class":159},")\n",[103,172,174],{"class":105,"line":173},8,[103,175,176],{"class":159},"{\n",[103,178,180,183,185,189,192,195,198,200],{"class":105,"line":179},9,[103,181,182],{"class":155},"    write",[103,184,160],{"class":159},[103,186,188],{"class":187},"sj4cs","1",[103,190,191],{"class":159},", ",[103,193,194],{"class":109},"&",[103,196,197],{"class":159},"c, ",[103,199,188],{"class":187},[103,201,202],{"class":159},");\n",[103,204,206],{"class":105,"line":205},10,[103,207,208],{"class":159},"}\n",[17,210,211,212,217],{},"Es la pieza más pequeña del módulo: recibe un carácter y lo manda a la salida\nestándar. Los otros ocho ejercicios y el ",[213,214,216],"a",{"href":215},"\u002Frush00","Rush 00"," escriben con algo\nequivalente.",[89,219,221],{"id":220},"línea-por-línea","Línea por línea",[223,224,226],"h3",{"id":225},"include-unistdh",[48,227,228],{},"#include \u003Cunistd.h>",[17,230,231,232,235,236,240],{},"Una línea que empieza por ",[48,233,234],{},"#"," no es C normal: es una orden para el\n",[237,238,239],"strong",{},"preprocesador",", un paso previo que copia y pega cosas antes de compilar.",[17,242,243,246,247,250,251,253,254,256,257,259,260,263],{},[48,244,245],{},"unistd.h"," es un archivo del sistema que contiene la ",[237,248,249],{},"declaración"," de ",[48,252,81],{},".\nEs como el índice de un libro: le dice al compilador «existe una función\nllamada ",[48,255,81],{}," con estos parámetros». Sin esta línea, el compilador no sabe qué\nes ",[48,258,81],{}," y con ",[48,261,262],{},"-Werror"," el programa ni se genera.",[223,265,267],{"id":266},"void-ft_putcharchar-c",[48,268,269],{},"void ft_putchar(char c)",[17,271,272],{},"Se lee de izquierda a derecha:",[21,274,275,285],{},[24,276,277],{},[27,278,279,282],{},[30,280,281],{},"Parte",[30,283,284],{},"Significado",[37,286,287,300,314],{},[27,288,289,293],{},[42,290,291],{},[48,292,152],{},[42,294,295,296,299],{},"la función ",[237,297,298],{},"no devuelve"," ningún valor",[27,301,302,307],{},[42,303,304],{},[48,305,306],{},"ft_putchar",[42,308,309,310,313],{},"el nombre (la ",[48,311,312],{},"ft_"," es convención de 42)",[27,315,316,321],{},[42,317,318],{},[48,319,320],{},"(char c)",[42,322,323,324,327,328,330,331],{},"recibe ",[237,325,326],{},"un"," parámetro llamado ",[48,329,98],{},", de tipo ",[48,332,163],{},[17,334,335,337,338,340,341,344,345,347],{},[48,336,163],{}," guarda ",[237,339,326],{}," carácter. Cuando alguien llama a ",[48,342,343],{},"ft_putchar('o')",", la\nfunción recibe una copia de ese carácter en una caja local llamada ",[48,346,98],{},". Esa caja\nexiste solo mientras la función se ejecuta.",[223,349,351],{"id":350},"write1-c-1",[48,352,353],{},"write(1, &c, 1);",[17,355,356,358,359,362],{},[48,357,81],{}," escribe bytes en un ",[237,360,361],{},"descriptor de archivo",". Tiene tres parámetros:",[21,364,365,377],{},[24,366,367],{},[27,368,369,372,375],{},[30,370,371],{},"Parámetro",[30,373,374],{},"Valor aquí",[30,376,284],{},[37,378,379,391,404],{},[27,380,381,384,388],{},[42,382,383],{},"descriptor",[42,385,386],{},[48,387,188],{},[42,389,390],{},"la salida estándar: la terminal",[27,392,393,396,401],{},[42,394,395],{},"buffer",[42,397,398],{},[48,399,400],{},"&c",[42,402,403],{},"la dirección donde está guardado el carácter",[27,405,406,409,413],{},[42,407,408],{},"cantidad",[42,410,411],{},[48,412,188],{},[42,414,415],{},"cuántos bytes escribir",[17,417,418,420,421,423,424,427,428,430,431,433,434,436,437,439,440,444],{},[48,419,194],{}," se lee «la dirección de». ",[48,422,81],{}," no recibe el valor del carácter, recibe\n",[237,425,426],{},"dónde leerlo","; por eso se pasa ",[48,429,400],{}," y no ",[48,432,98],{},". Si pasas ",[48,435,98],{},", el compilador\navisa de un tipo equivocado y ",[48,438,262],{}," lo convierte en error. La explicación\nlarga está en\n",[213,441,443],{"href":442},"\u002Fconceptos#paso-por-valor-las-funciones-reciben-copias","Paso por valor",".",[17,446,447,449,450,453],{},[48,448,81],{}," ",[237,451,452],{},"devuelve"," cuántos bytes pudo escribir. Aquí se descarta: no hay nada\nútil que hacer con ese número en una función de una línea.",[223,455,457,458],{"id":456},"no-hay-return","No hay ",[48,459,460],{},"return",[17,462,463,464,466,467,470],{},"La función es ",[48,465,152],{},", así que termina sola al llegar a la llave de cierre. Un\n",[48,468,469],{},"return ;"," final sería correcto pero redundante.",[89,472,474],{"id":473},"la-restricción-del-enunciado","La restricción del enunciado",[17,476,477,478,449,481,483,484,487],{},"El archivo contiene ",[237,479,480],{},"únicamente",[48,482,306],{},". Ni ",[48,485,486],{},"main",", ni funciones\nauxiliares, ni otros prototipos. Si añades algo, el corrector lo ve y el\nejercicio deja de cumplir el subject.",[89,489,491],{"id":490},"errores-típicos","Errores típicos",[21,493,494,507],{},[24,495,496],{},[27,497,498,501,504],{},[30,499,500],{},"Mensaje o síntoma",[30,502,503],{},"Causa",[30,505,506],{},"Solución",[37,508,509,524,542,559],{},[27,510,511,516,521],{},[42,512,513],{},[48,514,515],{},"implicit declaration of function 'write'",[42,517,518,519],{},"falta ",[48,520,228],{},[42,522,523],{},"añádelo arriba",[27,525,526,531,537],{},[42,527,528],{},[48,529,530],{},"passing 'char' to parameter of type 'const void *'",[42,532,533,534],{},"escribiste ",[48,535,536],{},"write(1, c, 1)",[42,538,539,540],{},"usa ",[48,541,400],{},[27,543,544,547,554],{},[42,545,546],{},"no imprime nada",[42,548,549,550,553],{},"pasaste ",[48,551,552],{},"0"," como descriptor",[42,555,556,557],{},"el primero es ",[48,558,188],{},[27,560,561,567,572],{},[42,562,563,566],{},[48,564,565],{},"undefined reference to 'ft_putchar'"," al probar",[42,568,569,570],{},"no compilaste ",[48,571,60],{},[42,573,574],{},"pásalo en el comando",[89,576,578],{"id":577},"comprobarlo","Comprobarlo",[94,580,584],{"className":581,"code":582,"language":583,"meta":99,"style":99},"language-sh shiki shiki-themes github-light github-dark","cat > \u002Ftmp\u002Fmain.c \u003C\u003C'EOF'\nvoid    ft_putchar(char c);\n\nint main(void)\n{\n    ft_putchar('o');\n    return (0);\n}\nEOF\ncc -Wall -Wextra -Werror ex00\u002Fft_putchar.c \u002Ftmp\u002Fmain.c -o \u002Ftmp\u002Fex00\n\u002Ftmp\u002Fex00\n","sh",[48,585,586,603,608,612,617,621,626,631,635,640,665],{"__ignoreMap":99},[103,587,588,591,594,597,600],{"class":105,"line":106},[103,589,590],{"class":155},"cat",[103,592,593],{"class":109}," >",[103,595,596],{"class":113}," \u002Ftmp\u002Fmain.c",[103,598,599],{"class":109}," \u003C\u003C",[103,601,602],{"class":113},"'EOF'\n",[103,604,605],{"class":105,"line":117},[103,606,607],{"class":113},"void    ft_putchar(char c);\n",[103,609,610],{"class":105,"line":124},[103,611,121],{"emptyLinePlaceholder":120},[103,613,614],{"class":105,"line":131},[103,615,616],{"class":113},"int main(void)\n",[103,618,619],{"class":105,"line":137},[103,620,176],{"class":113},[103,622,623],{"class":105,"line":143},[103,624,625],{"class":113},"    ft_putchar('o');\n",[103,627,628],{"class":105,"line":149},[103,629,630],{"class":113},"    return (0);\n",[103,632,633],{"class":105,"line":173},[103,634,208],{"class":113},[103,636,637],{"class":105,"line":179},[103,638,639],{"class":113},"EOF\n",[103,641,642,645,648,651,654,657,659,662],{"class":105,"line":205},[103,643,644],{"class":155},"cc",[103,646,647],{"class":187}," -Wall",[103,649,650],{"class":187}," -Wextra",[103,652,653],{"class":187}," -Werror",[103,655,656],{"class":113}," ex00\u002Fft_putchar.c",[103,658,596],{"class":113},[103,660,661],{"class":187}," -o",[103,663,664],{"class":113}," \u002Ftmp\u002Fex00\n",[103,666,668],{"class":105,"line":667},11,[103,669,670],{"class":155},"\u002Ftmp\u002Fex00\n",[17,672,673],{},"Salida:",[94,675,680],{"className":676,"code":678,"language":679,"meta":99},[677],"language-text","o\n","text",[48,681,678],{"__ignoreMap":99},[17,683,684,685,688],{},"No hay salto de línea: la función escribe el carácter y nada más. El ",[48,686,687],{},"\\n"," lo\npone quien llama.",[89,690,692],{"id":691},"descargar","Descargar",[694,695,696],"ul",{},[697,698,699],"li",{},[213,700,702],{"href":701,"download":60},"..\u002Fcode\u002Fft_putchar.c",[48,703,60],{},[14,705,706],{},[17,707,708,709,444],{},"Este archivo es el mismo que usa el Rush 00 en ",[48,710,711],{},"ex00\u002Fft_putchar.c",[713,714,715],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":99,"searchDepth":117,"depth":117,"links":717},[718,719,726,727,728,729],{"id":91,"depth":117,"text":92},{"id":220,"depth":117,"text":221,"children":720},[721,722,723,724],{"id":225,"depth":124,"text":228},{"id":266,"depth":124,"text":269},{"id":350,"depth":124,"text":353},{"id":456,"depth":124,"text":725},"No hay return",{"id":473,"depth":117,"text":474},{"id":490,"depth":117,"text":491},{"id":577,"depth":117,"text":578},{"id":691,"depth":117,"text":692},"Escribe un carácter con write, sin nada más: el punto de partida del módulo.","md",{},"\u002Fex00",{"title":5,"description":730},"ex00","A0TYLAyLjVttQ-BpFKPewgzfY72baeG4s50I3VmAhrI",1793539815756]