我是C的新手,觉得我好像缺少一些格式化语法,但我无法弄清楚到底是什么。用
编译程序gcc -o test test.c myprintf.c
我收到以下错误
expected â;â, â,â or â)â before âsâ
我很抱歉,如果这是我的一些简单的忽视,但格式似乎对我来说是正确的。这也是家庭作业的一部分,但我测试了我负责单独创建的每个功能,它们工作得很好。我省略了我负责编写的功能,如果你认为需要它们,我会编辑它们,因为它似乎甚至不能访问它们。错误直接发生在我的第一个和部分函数之间(printint和printstring之间的空行。
#include <stdio.h>
extern void myprintf(const char *, ...);
int main()
{
myprintf("Nothing much\n");
return 0;
}
#include <stdarg.h>
#include <stdio.h>
void printint(int i){
int temp;
/*some while loop that shrinks i while outputting the correct char*/
int ascii = i + '0';
putchar(ascii);
}
void printstring(char[] s){
int i = 0;
/*some while loop that moves through a string using putchar to output the corresponding character*/
}
void printhex(int k){
/*long complicated program involving a series of loops that change a decimal into a hexidecimal, obviously without using any built in printf or modifiers*/
}
/*This is the code provided that uses my 3 functions. I assume it all to be correct*/
void myprintf(const char *fmt, ...) {
const char *p;
va_list argp;
int i;
char *s;
va_start(argp, fmt);
for (p = fmt; *p != '\0'; p++) {
if (*p != '%') {
putchar(*p);
continue;
}
switch (*++p) {
case 'c':
i = va_arg(argp, int);
putchar(i);
break;
case 'd':
i = va_arg(argp, int);
printint(i);
break;
case 's':
s = va_arg(argp, char *);
printstring(s);
break;
case 'x':
i = va_arg(argp, int);
printhex(i);
break;
case '%':
putchar('%');
break;
}
}
va_end(argp);
}
答案 0 :(得分:3)
以下行不正确:
void printstring(char[] s){
将其更改为:
void printstring(char s[]){
答案 1 :(得分:1)
你的专栏:
void printstring(char[] s){
应该是:
void printstring(char s[]){
数组的方括号位于变量名之后,就像在代码中使用s[i]
索引它一样。