好的,我知道这很简单,但是我不明白这里发生了什么。此函数接收一个应该是打印机状态消息的字符串,然后循环遍历该字符串,如果该字符串仅包含字母“ a”-“ m”,则应认为它是“无错误”状态。如果它包含其他字母,则将是“错误消息”。
以分数形式返回结果,其中分子是错误字符的数量,分母是字符串中字符的总数。
示例:“ aabb”应返回“ 0/4”, “ azaz”应返回“ 2/4”
我认为正在发生的事情是返回的指针比输入字符串长,所以当我使用strcmp()
时,表明它们不相等。它们看起来相同,但是您会在输出中看到返回的ptr上有一些尾随空格。
我还应该提到我正在使用xcode作为我的IDE,我认为它使用的是c99
无论如何,这里是代码,感谢您的宝贵时间。
#include <stdio.h>
#include <string.h>
char* printerError(char *s)
{
int i, string_size, error_total;
unsigned long int size = strlen(s);
char status[size];
char *ptr;
string_size = error_total = 0;
for (i=0; i<size; i++)
{
string_size++;
if (s[i] > 'm')
error_total++;
}
sprintf(status,"%d/%d\n", error_total, string_size);
printf("status = %s\n", status);
ptr = status;
printf("ptr = %s\n", ptr);
return ptr;
}
int main(void) {
if (strcmp("2/4", printerError("xacz"))!= 0)
//Here is where you can see the problem i'm having
printf("2/4 and %s are Not Equal\n", printerError("xacz"));
else
printf("equal\n");
//This is how it should look if they weren't equal
printf("2/4 and 2/4 are not equal\n");
return 0;
}