導航:首頁 > 源碼編譯 > v語言中用gets顯示編譯失敗

v語言中用gets顯示編譯失敗

發布時間:2022-06-06 12:09:22

⑴ c語言編程中字元串復制函數編程程序出現錯誤,這是怎麼回事

這是CPP工程,頭文件你得改成
#include"stdio.h"
#include"string.h"
如果是#include<string>就是調用C++的庫

⑵ 在C語言中為什麼gets函數有的時候不推薦用 編譯的時候編譯器都會提示warning

這是關繫到信息安全領域的一些知識。
會有這樣的一個情況:
char a[12];
gets(a);
當你輸入的東西遠比12要長時,他還是會接收並寫入空間。這樣就溢出了,覆蓋掉後面的相應空間。也就是說他寫入了不該他來寫的東西。如果寫得設計好點,完全可以通過這個去完成一些不好的事情。編譯器一般會提示你去換個安全的函數,來避免這個情況。

⑶ c語言的gets函數編譯不成功阿,很短的程序

你是用什麼c的編程軟體的,我用vc6調試運行這段程序是完全編譯通過的,而且運行結果也正確,所以不是程序本身的問題,而是你調試運行時候有錯誤或者你用的編譯器本身就有問題。
糾正一點,編譯出錯的提示裡面,你最主要看的是error後面跟著的內容,warning後面跟著的內容只是警告,譬如一些數據類型的自動轉換,編譯的時候都會出現warning,直接忽略就好了。

⑷ 在c語言中怎樣使用gets()函數

gets從標准輸入設備讀字元串函數,可以無限讀取,不會判斷上限,以回車結束讀取,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。

1、從stdin流中讀取字元串,直至接受到換行符或EOF時停止,並將讀取的結果存放在buffer指針所指向的字元數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為『』空字元,並由此來結束字元串。

2、讀入成功,返回與參數buffer相同的指針;讀入過程中遇到EOF(End-of-File)或發生錯誤,返回NULL指針。所以在遇到返回值為NULL的情況,要用ferror或feof函數檢查是發生錯誤還是遇到EOF。

3、本函數可以無限讀取,不會判斷上限,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。如果溢出,多出來的字元將被寫入到堆棧中,這就覆蓋了堆棧原先的內容,破壞一個或多個不相關變數的值。這個事實導致gets函數只適用於玩具程序,為了避免這種情況,我們可以用fgets(stdin) (fgets實際上可以讀取標准輸入(即大多數情況下的鍵盤輸入),具體參閱fgets詞條)來替換gets()。在V7的手冊(1979年)中說明:為了向後兼容,gets刪除換行符,gets並不將換行符存入緩沖區。

4、gets()函數用來從標准輸入設備(鍵盤)讀取字元串直到換行符結束,但換行符會被丟棄,然後在末尾添加''字元。其調用格式為:gets(s);其中s為字元串變數(字元串數組名或字元串指針)。

⑸ C語言使用gets函數輸入字元串出問題了求解答 turbo C 2.0 編譯系統

首先糾正一下,是環境,不是系統!
---------------------------------------------------------
你這個是函數,不是被跳過了,而是進去之後,沒辦法執行裡面的語句,所以什麼都沒有!!

⑹ C語言編譯不通過,求指點,在線等!

1.else candidant [5]=candidant [5]+1這一句的if在哪裡?
2.strcmp (b[10],"vipper")——類似這樣的語句全是錯的:b[10]是一個字元,而"vipper"是個字元串,怎麼比較?寫成strcmp (b,"vipper")才對,因為二者都是字元串了。
3.PD1 (candidant [6],b[10])好像還沒有聲明就調用了……
4.類似return (candidant [0], candidant [1], candidant [2],candidant [3], candidant [4], candidant [5])這樣的語句只返回只能返回最右邊的那個「,」後面的一項的值。不知原意是不是這樣。
5.不該有空格的地方不要留空格,如candidant [1]寫成candidant[1]為好……

⑺ C語言結構體為什麼用gets和puts輸入和輸出 經常出現錯誤

/*
1.設計一個保存學生情況的結構,學生情況包括姓名、學號、
年齡。輸入5個學生的情況,輸出學生的平均年齡和年齡最小
的學生的情況。要求輸入和輸出分別編寫獨立的輸入函數input()
和輸出函數output()。
*/

#include <stdio.h>

struct Student {
char name[100]; // 姓名
char stdNo[10]; // 學號
int age; // 年齡
};

// 輸入學生信息
void input (Student *stu, int n) {
printf("輸入%d個學生信息:", n);

for (int i = 0; i < n; i++) {
printf("\n第%d個學生:\n", i + 1);
printf("姓名:");
gets(stu[i].name);
printf("學號:");
gets(stu[i].stdNo);
printf("年齡:");
scanf("%d", &stu[i].age);
fflush(stdin);
}
}
/*
2.使用結構數組輸入10本書的名稱和單價,調用函數按照書名
的字母順序序進行排序,在主函數輸出排序結果。
*/

#include <stdio.h>
#include <string.h>

struct Book {
char name[100]; // 書名
float price; // 價格
};

// 按書名排序
void sort (Book **pBook, int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - 1 - i; j ++) {
if (strcmp((*pBook[j]).name, (*pBook[j + 1]).name) == 1) {
Book *temp = pBook[j];
pBook[j] = pBook[j + 1];
pBook[j + 1] = temp;
}
}
}
}

main () {
Book book[10];
Book *prtBook[10];

printf("輸入10本書的信息:\n");
for (int i = 0; i < 10; i++) {
printf("\n第%d本書:\n", i + 1);
printf("書名:");
gets(book[i].name);
printf("價格:");
scanf("%f", &book[i].price);
prtBook[i] = &book[i];
fflush(stdin);
}

sort(prtBook, 10);

for (int n = 0; n < 10; n++) {
printf("%s\t\t%0.2f\n", (*prtBook[n]).name, (*prtBook[n]).price);
}
}

/*
3.建立一個有5個結點的單向鏈表,每個結點包含姓名、年齡和工資。
編寫兩個函數,一個用於建立鏈表,另一個用來輸出鏈表。
*/

#include <stdio.h>
#include <malloc.h>

struct Employee {
char name[100]; // 姓名
int age; // 年齡
float salary; // 工資
Employee *next;
};

// 輸入員工信息建立鏈表
Employee * input () {
Employee *head, *ins;

puts("輸入5個員工的信息:\n");

head = (Employee *) malloc(sizeof(Employee));
if (head == NULL) {
puts("no enough memory!\n");
return NULL;
}

(*head).next = NULL;
ins = head;
for (int i = 0; i < 5; i++) {
Employee *emp = (Employee *) malloc(sizeof(Employee));
if (emp == NULL) {
puts("no enough memory!\n");
return NULL;
}

printf("\n第%d個員工的姓名:", i + 1);
gets((*emp).name);
printf("第%d個員工的年齡:", i + 1);
scanf("%d", &(*emp).age);
printf("第%d個員工的工資:", i + 1);
scanf("%f", &(*emp).salary);
fflush(stdin);
(*emp).next = NULL; // 為每個欄位設置值

// 按照輸入的順序加入的鏈表中
(*ins).next = emp;
ins = emp;
}
return head;
}

// 輸出鏈表
void output (Employee *p) {
while (p != NULL) {
printf("\n姓名:\t%s\n", (*p).name);
printf("年齡:\t%d\n", (*p).age);
printf("工資:\t%0.1f\n", (*p).salary);

p = (*p).next;
}
}

main () {
Employee *head;

head = input();
if (head == NULL) {
puts("發生錯誤不能建立鏈表!");
}

output((*head).next);
}

⑻ C語言中的gets函數問題!

首先這里如果行數超過MAX,輸入字元超過LEN就會錯。其次應該沒問題。
你可以自己運行一下試試看。
gets(text[t])是把輸入的字元串讀入text[t]
text是個二維數組,比如第一行是abc,那麼
text[0][0]='a'
text[0][1]='b'....
text[0] = 'abc\0'吧……

閱讀全文

與v語言中用gets顯示編譯失敗相關的資料

熱點內容
捷豹小型空氣壓縮機 瀏覽:553
綠盾文檔加密系統哪裡有賣 瀏覽:635
我的世界怎麼開掛在伺服器裡面 瀏覽:787
西門子自鎖正反轉編程圖 瀏覽:747
出國英語pdf 瀏覽:918
演算法線性匹配 瀏覽:671
山東省dns伺服器雲主機 瀏覽:552
安卓5g軟體怎麼隱藏 瀏覽:837
編譯內核空間不足開不了機 瀏覽:884
漢紀pdf 瀏覽:471
在哪裡下載國家醫保app 瀏覽:654
沒有與文件擴展關聯的編譯工具 瀏覽:425
我的世界反編譯mcp下載 瀏覽:18
安卓手柄下載什麼軟體 瀏覽:67
pushrelabel演算法 瀏覽:848
硬碟資料部分文件夾空白 瀏覽:615
cssloader的編譯方式 瀏覽:937
java面板大小 瀏覽:501
怎麼用命令方塊打出字體 瀏覽:497
台灣加密貨幣研究小組 瀏覽:294